asp.net-mvc – ASP.NET MVC – Typesafe Html.TextBoxFor,具有
发布时间:2020-12-16 03:40:41 所属栏目:asp.Net 来源:网络整理
导读:我的视图使用ModelX来呈现我的 HTML表单,我的控制器操作在保存表单时将ModelY作为输入.似乎typeafeafe文本框API假设我在两个地方使用相同的模型. 是否可以在不创建自己的帮助者的情况下使用不同的模型和安全类型? %= Html.TextBoxFor(x = x.Text)% 我想要
我的视图使用ModelX来呈现我的
HTML表单,我的控制器操作在保存表单时将ModelY作为输入.似乎typeafeafe文本框API假设我在两个地方使用相同的模型.
是否可以在不创建自己的帮助者的情况下使用不同的模型和安全类型? <%= Html.TextBoxFor(x => x.Text)%> 我想要这样的东西.它存在吗? <% = Html.TextBoxFor<InputModel,OutputModel>(input=>input.Text,output=>output.SomeOtherText) 解决方法
我找到了一个解决方案,涉及创建一个新的html帮助器. OP是正确的说,有时候使用相同的类作为action方法和viewpage的参数是不合适的.有时我们希望将更多信息传递给ViewPage,而不是用户在表单帖子中返回给我们的信息.
我想出的解决方案是使用HtmlHelper扩展方法,我称之为HtmlHelperFor(T obj),我使用如下: <% var productForm = Html.HtmlHelperFor(Model.Product); %> 然后我用它如下: <%= productForm.TextBoxFor(x => x.Name) %> 扩展方法如下: public static HtmlHelper<T> HtmlHelperFor<T>(this HtmlHelper html,T model) { var newViewData = new ViewDataDictionary(html.ViewDataContainer.ViewData) { Model = model }; ViewContext newViewContext = new ViewContext(html.ViewContext.Controller.ControllerContext,html.ViewContext.View,newViewData,html.ViewContext.TempData,html.ViewContext.Writer); var viewDataContainer = new ViewDataContainer(newViewContext.ViewData); return new HtmlHelper<T>(newViewContext,viewDataContainer,html.RouteCollection); } ViewDataContainer是Sysetm.Web.Mvc中的IViewDataContainer接口的实现: public class ViewDataContainer : System.Web.Mvc.IViewDataContainer { public ViewDataContainer(System.Web.Mvc.ViewDataDictionary viewData) { ViewData = viewData; } public System.Web.Mvc.ViewDataDictionary ViewData { get; set; } } 上面的调用将允许您将Product对象作为接受POST的方法的参数的一部分,而不是包含通常传递给视图的项目的类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.Net MVC帮助重构
- asp.net-mvc-3 – asp.net mvc 3 razor从IEnumerable获取一
- asp.net – 正则表达式,用于标识0.0到1.0之间的小数
- 使用Asp.Net文本框的Bootstrap Datepicker
- asp.net – FxCop抑制
- asp.net-mvc – 使用KendoUI Grid的KendoUI编辑器模板问题
- asp.net-mvc-3 – 使用多个Web应用程序共享控制器和视图
- asp.net-mvc – 将HTML属性添加到Html.BeginForm()的变体
- asp.net-mvc – NUnit中的MbUnit的行属性?
- asp.net – RDLC报表中表的行颜色和替代行颜色
推荐文章
站长推荐
- asp.net – 使用MVC的Attribute Routing和RouteL
- 有没有人使用ASP.net(webforms)动态生成javascri
- 新单词 part 15
- asp.net-mvc – 具有Fluent nHibernate和Ninject
- ASP.NET MVC AJAX Sys是未定义的错误
- asp.net-identity-2 – asp.net mvc identity 2运
- asp.net-mvc – 实体框架中的字段最大长度
- asp.net-core – 如何在Asp.net Core中检测会话超
- asp.net-web-api – ASP.NET Web API – 具有多个
- Asp.Net MVC – 重载动作方法
热点阅读