了解强类型html帮助程序的工作原理

时间:2014-08-18 14:19:43

标签: asp.net-mvc asp.net-mvc-3 html-helper razor-2

框架: ASP.NET MVC 3
工具: VS 2012

嗨,大家好, 我是ASP.NET mvc的新手,我一直使用强类型的html帮助器,我不完全理解它们但知道它可以提供类型检查并根据属性名称保留名称,之后使用它很多次我经常遇到这个错误,似乎没有任何暗示为什么它的发生尝试了几个谷歌搜索,但没有人帮助我。

错误: 这个名字是' m'在当前的情境中不存在 的代码: @Html.LabelFor(m => m.OrginalCont.Title)

但这行代码完全正常。 @Html.TextBox("origTitle", Model.OrginalCont.Title, new { @readonly = "", @class = "text-rounded", style = "width:425px" })

有人可以告诉我这里发生了什么。我在视图中多次使用相同的m => m.Name语法,但它们都运行正常。

更新 好吧我会尝试发布更多的代码,但由于代码可能会变得太长,我会尽量保持简短并发布与问题相关的代码。

查看

@model TS.MOP.Interface.Models.ProjectTranslationModel
    <div class="form-item">
    @Html.LabelFor(model => model.OrginalCont.Title)
    <div class="editor-field">
        @Html.TextBox("origTitle", Model.OrginalCont.Title, new { @readonly = "", @class = "text-rounded", style = "width:425px" })
    </div>
</div>

模型

public class ProjectTranslationModel
{
 public int ProjectId { get; set; }
 [Required(ErrorMessageResourceType = typeof(Names), ErrorMessageResourceName = "Required_ErrorMessage")]
 [DataType(DataType.Text)]
 [Display(ResourceType = typeof(Names), Description = "TranslateLangs_Description", Name = "TranslateLangs_Title")]
 public List<SelectListItem> TranslatableLangSelect { get; set; }
 public TranslatableLanguageEditor TranslatableLangEditor { get; set; }
 public OriginalContent OrginalCont { get; set; }
}

控制器

[Authorize]
    public ActionResult TranslationEdit(int? id)
    {
        if (id.HasValue && User.IsInRole("ContentTranslator"))
        {
            var model = new ProjectTranslationModel();
            model.ProjectId = id.Value;
            var ContentTypeId = 2;//Project Page
            Guid _currentUserId = Guid.Parse(Membership.GetUser(User.Identity.Name).ProviderUserKey.ToString());
            var translatorSettings = db.TranslatorSettings.Where(x => x.UserId == _currentUserId).ToList();
            model.TranslatableLangEditor = new TranslatableLanguageEditor();
            var list = new List<SelectListItem>();

            //Original Text
            var originalContent = db.Projects.Where(x => x.Id == id.Value)
                .Select(d => new OriginalContent { Title = d.Title, Content = d.Description, ContentCultureId = d.ProjectType.ContentCultureId }).FirstOrDefault();
            model.OrginalCont = originalContent;

            foreach (var item in translatorSettings)
            {
                //Select List                               
                var li = new SelectListItem();
                if (item.ContentCultureId != originalContent.ContentCultureId)//Dont add the Original Content CultureId to the dropDown
                {
                    li.Value = item.ContentCultureId.ToString();
                    li.Text = item.ContentCulture.Description;
                    list.Add(li);
                }
            }
            model.TranslatableLangSelect = list;
            return View(model);
        }
        else
        {
            return View("Index");
        }
    }

0 个答案:

没有答案
相关问题