我有一个名字“编辑”:
@model EMMS.ViewModels.MaintenanceViewModel
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset style="width: 800px;">
<legend>Maintenance Details</legend>
<div class="editor">
@Html.LabelFor(model => model.EquipmentID)
@Html.TextBoxFor(model => model.EquipmentID, new { style = "width: 200px;" })
@Html.ValidationMessageFor(x => x.EquipmentID)
</div>
</fieldset>
<div id="dialog-validate-user" style="display: none;">
@Html.Partial("_ValidateUser")
</div>
}
它包含一个jquery UI对话框,其中填充了以下部分视图:
@{
ViewBag.Title = "_ValidateUser";
}
<h3>User Verification Required</h3>
<p>Please enter your network login credentials.</p>
@using (Html.BeginForm("Edit", "Maintenance", FormMethod.Post)) {
<div>
<p>
<span>User Name:</span>
@Html.TextBox("UserName")
</p>
<p>
<span>Password:</span>
@Html.Password("Password")
</p>
</div>
}
我想将UserName和Password输入的值传递回维护控制器的编辑(post)actionresult。操作结果如下所示:
[HttpPost]
public ActionResult Edit(MaintenanceViewModel maintenanceViewModel, string UserName, string Password)
{
}
当我断开ActionResult的断点时,UserName和Password始终为null。它们不是viewmodel的一部分,只是我需要传递给edit方法的参数。
感谢任何帮助
答案 0 :(得分:3)
重要:强>
当你在该div上使用jQuery UI对话框时,它会从表单中删除它。这就是为什么它们是空的。
您可以在我的jsFiddle here中看到。
如果我是你,我会把表单分开,这样它们就不会嵌套。
修改视图
@model EMMS.ViewModels.MaintenanceViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset style="width: 800px;">
<legend>Maintenance Details</legend>
<div class="editor">
@Html.LabelFor(model => model.EquipmentID)
@Html.TextBoxFor(model => model.EquipmentID, new { style = "width: 200px;" })
@Html.ValidationMessageFor(x => x.EquipmentID)
</div>
</fieldset>
}
<div id="dialog-validate-user" style="display: none;">
@Html.Partial("_ValidateUser")
</div>
_ValidateUser Partial:
@{
ViewBag.Title = "_ValidateUser";
}
<h3>User Verification Required</h3>
<p>Please enter your network login credentials.</p>
@using (Html.BeginForm("Login", "Maintenance", FormMethod.Post))
{
<div>
<p>
<span>User Name:</span>
@Html.TextBox("UserName")
</p>
<p>
<span>Password:</span>
@Html.Password("Password")
</p>
</div>
}
<强>控制器:强>
[HttpPost]
public ActionResult Login(string UserName, string Password)
{
// do something here with the login
}
MVC的美妙之处在于适当的分离。
请记住,自定义ViewModel的重点是组合这些字段。
<强>此外:强>
在获得有关要求的更多信息之后,这里最好的解决方案是删除部分表单并将用户名和密码添加到ViewModel:)