我知道有关ASP.NET MVC中复杂模型绑定的类似问题,但我遇到了一个问题,因为POST上缺少足够的前缀,并想知道是否有一个简单的解决方案。 / p>
我有一个看起来像这样的模型:
public class ViewModel<Survey, Contact>
{
public Survey Model { get; set; }
public Contact Model2 { get; set; }
}
然后我有一个这样的动作方法接受POSTed
public ActionResult Survey(
string id, string id2, SurveyViewModel<Survey, Contact> model)
{
// code goes here...
}
在我的表单中,前两个id来自URL路由,然后我有表单代码(使用@Html.EditorFor(x => x.Model.SurveyName)
或类似),使用这样的名称生成:
<input class="text-box single-line" id="Model_Email"
name="Model.Email" type="text" value="" />
如果我将名称从Model.Email
更改为model.Model.Email
,则帖子有效,但我正在尝试避免创建自定义模型活页夹。
有吗
@Html.EditorFor
类型的视图助手更改视图中呈现的所有字段的名称?答案可能是“建立一个自定义活页夹”,但我只想在咬掉之前提出问题。
感谢您的帮助。最诚挚的问候,
哈尔
答案 0 :(得分:2)
您可以使用自定义HtmlFieldPrefix传递自定义viewdata进行查看。使用帮助器呈现的每个控件都将具有该前缀。
ViewData.TemplateInfo.HtmlFieldPrefix = "prefix here";
看看这个:Forcing EditorFor to prefix input items on view with Class Name?