我希望在我的视图中使用RenderPartial两次,并关联不同的模型.问题是两个模型中都存在一些属性(昵称,密码).它们没有前缀,所以即使id或名称在输出中也是相同的.现在,如果我有昵称或密码的模型错误,则两个字段都会突出显示.
主要观点:
<div>
<% Html.RenderPartial("Register", Model.RegisterModel); %>
</div>
<div>
<% Html.RenderPartial("Login", Model.LoginModel); %>
</div>
Run Code Online (Sandbox Code Playgroud)
登录PartialView:
<% using (Html.BeginForm("Login", "Member")) { %>
<fieldset>
<legend>Login</legend>
<p>
<%= Html.LabelFor(x => x.Nickname) %>
<%= Html.TextBoxFor(x => x.Nickname) %>
</p>
<p>
<%= Html.LabelFor(x => x.Password) %>
<%= Html.PasswordFor(x => x.Password) %>
</p>
<input type="submit" value="Login" />
</fieldset>
<% } %>
Run Code Online (Sandbox Code Playgroud)
注册PartialView:
<% using (Html.BeginForm("Register", "Member")) { %>
<fieldset>
<legend>Register</legend>
<p>
<%= Html.LabelFor(x => x.Nickname) %>
<%= Html.TextBoxFor(x => x.Nickname) %>
</p>
<p>
<%= Html.LabelFor(x => …Run Code Online (Sandbox Code Playgroud) 我有一个EditorFor:
<%: Html.EditorFor(model => model.Client, "ClientTemplate", new { editing = false })%>
Run Code Online (Sandbox Code Playgroud)
这将绑定到视图正常(如预期)但在模型发布时不会绑定绑定.这是因为表单ID没有以"客户端"作为前缀.
通常在这种情况下我只是传入模型,然后将输入绑定到模板中的model.Client.PropertyName,但在这种情况下这不是一个选项,因为模板用于两个不同的视图模型(有客户端).
有关正确绑定的任何建议吗?
非常感谢,Kohan.
这似乎是我的一个误解,我现在明白这个问题是fluentHtml在EditorFor Templates中不起作用.(同样适用于此修复,因为事实证明不需要,因为如果我用正常的mvc html助手替换fluentHtml,EditorFor会自动为我添加前缀)