asp.net-mvc – 我的模型中名为Title的属性与我视图中的View.Tit
发布时间:2020-12-16 04:29:38 所属栏目:asp.Net 来源:网络整理
导读:我的模型包含一个名为Title的属性,在我的Create视图中,我使用ViewBag.Title设置页面标题. 这会产生以下问题:Html.Editor生成的表单将显示ViewBag.Title中的文本,而不是模型的Title值. 我找到的唯一解决方法是首先调用Html.Editor,然后设置View.Title. 有没
我的模型包含一个名为Title的属性,在我的Create视图中,我使用ViewBag.Title设置页面标题.
这会产生以下问题:Html.Editor生成的表单将显示ViewBag.Title中的文本,而不是模型的Title值. 我找到的唯一解决方法是首先调用Html.Editor,然后设置View.Title. 有没有人有更好的解决方案? 编辑1:我正在使用MVC 3. 编辑2:这是我的DisplayTemplates / Object.cshtml: @model dynamic @using Iconum.VS10CS040.Library.Web.MVC3.Helpers @if (ViewData.TemplateInfo.TemplateDepth > 1) { <span class="editor-object simple">@ViewData.ModelMetadata.SimpleDisplayText</span> } else { foreach (var prop in ViewData.ModelMetadata.Properties.Where( pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm) && pm.ModelType != typeof(System.Data.EntityState) && !pm.IsComplexType ) ) { if (prop.HideSurroundingHtml) { <text>@Html.Editor(prop.PropertyName)</text> } else { string css = ""; if (prop.Model != null && prop.Model.GetType() != null) { css += " " + prop.Model.GetType().ToString().ToLower().Replace('.','-'); } if (prop.DataTypeName != null) { css += " " + prop.DataTypeName.ToLower(); } if (prop.IsRequired && prop.ModelType.FullName != "System.Boolean") { css += " required"; } <div class="editor-container @css"> <div class="editor-label"> @if (!String.IsNullOrEmpty(Html.Label(prop.PropertyName).ToHtmlString())) { // Use LabelWithForThatMatchesTheIdOfTheInput instead of Label because of a bug (fixed in MVC 3) @Html.LabelWithForThatMatchesTheIdOfTheInput(prop.PropertyName) } @if (prop.IsRequired && prop.ModelType.FullName != "System.Boolean") { @Html.Raw(" <span class="required">*<span>"); } </div> <div class="editor-field"> @* This the line that causes my problem *@ @Html.Editor(prop.PropertyName) @Html.ValidationMessage(prop.PropertyName) </div> </div> } } //foreach // Loop though all items in the Model with an TemplateHint (UIHint) foreach (var prop in ViewData.ModelMetadata.Properties.Where( pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm) && pm.ModelType != typeof(System.Data.EntityState) && !pm.IsComplexType && pm.TemplateHint != null && ( pm.TemplateHint == "jWYSIWYG0093" || pm.TemplateHint == "jQueryUIDatepicker" || pm.TemplateHint == "CKEditor" ) ) ) { // TODO: check for duplicate js file includes @Html.Editor(prop.PropertyName,prop.TemplateHint + "-Script") } } 解决方法
我建议使用EditorFor而不是Editor.
Html.EditorFor(x => x.Title) 代替: Html.Editor("Title") 这样不仅视图可以利用您的视图模型,而且在这种情况下它的行为也符合预期. ASP.NET MVC 3.0 RTM(Razor)的示例: 模型: public class MyViewModel { public string Title { get; set; } } 控制器: public class HomeController : Controller { public ActionResult Index() { ViewBag.Title = "ViewBag title"; ViewData["Title"] = "ViewData title"; var model = new MyViewModel { Title = "Model title" }; return View(model); } } 视图: @model AppName.Models.MyViewModel @{ ViewBag.Title = "Home Page"; } @Html.EditorFor(x => x.Title) @{ ViewBag.Title = "Some other title"; } 所以无论我们在这里滥用多少,编辑器模板都使用正确的模型标题(如果我们使用Html.Editor(“Title”)则不是这种情况). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在UNC路径上安装ASP.NET应用程序,您认为这可能吗?
- asp.net-mvc – 在ASP.Net MVC的视图中获取控制器和操作方法
- asp.net-mvc – 在数组中使用jqAutocomplete
- asp.net-mvc – 忽略viewstart在asp.net mvc razor视图?
- asp.net – log4net在应用程序关闭之前不会写入日志条目
- “DataSource和DataSourceID都被定义为”使用ASP.NET GridV
- asp.net-mvc – 如何将现有的asp.net应用程序迁移到asp.net
- 在ASP.NET中流式传输大文件上传
- asp.net-mvc-4 – 如何使用mvc 4中的bundle删除版本生成器的
- asp.net-mvc-3 – 选择更改事件 – Html.DropDownListFor
推荐文章
站长推荐
- asp.net mvc调试器抛出SEHException
- 安装程序 – 无法安装ASP.NET MVC3 RTM?
- asp.net – 如何为Umbraco创建项目包?
- asp.net-mvc-3 – 最初未显示Telerik MVC Grid C
- ASP.NET Core MVC base64映像到IFormFile
- asp.net-mvc-3 – MVC 3子域路由
- Asp.net webForm设置允许表单提交Html的方法
- asp.net-mvc-3 – 如何将int数组传递给RouteValu
- asp.net-mvc – MVC – 无法解析视图(单独项目中
- asp.net-mvc – 使用Html.BeginForm()与自定义路
热点阅读