我在一个页面上有两个表单。 在我的第一个表单中,我有所有的字段数据(名称,用户名,密码等)。在我的第二种形式中,我只有一个按钮。提交的两个表单都会在我的控制器中执行不同的操作。
问题 - 当我从按钮点击提交表单2时,表单1中的任何字段都不会通过ViewModel传递给控制器。防爆。行动" ExternalLogin"没有获得"性别"字段值
我如何通过"性别"在提交第二张表格之前,从第一张表格到第二张表格? JQuery的?我尝试将HTML.HiddenFor(m => m.Gender)放在我的第二种形式中,但那不起作用。
以下是一些示例代码。
Native

答案 0 :(得分:0)
这完美地工作并做你想做的事
控制器代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Temp.Models;
namespace Temp.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
[HttpPost]
public void Register(MyModel mymodel)
{
}
[HttpPost]
public void ExternalLogin(int mygender)
{
}
}
}
型号代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Temp.Models
{
public class MyModel
{
public enum Gender { Male = 1, Female = 2 }
public Gender gender { get; set; }
}
}
查看代码
@model Temp.Models.MyModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script src="~/scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
function OnChange()
{
$("#mygender").val($("#genderId").val())
}
</script>
@using (Html.BeginForm("Register", "Home", FormMethod.Post, new { @class = "form-horizontal", @id = "registerForm", role = "form", style = "margin-left: 20px" }))
{
<div id="formGroup1" class="form-group">
@Html.LabelFor(m => m.gender, new { @id = "genderLabel" })
<div class="">
@Html.EnumDropDownListFor(m => m.gender, new { @id = "genderId", @class = "selectpicker form-control",@onchange="javascript:OnChange();" })
</div>
</div>
<button type="submit" class="btn btn-default btn-lg">Connect</button>
}
@using (Html.BeginForm("ExternalLogin", "Home", FormMethod.Post, new { @id = "registerForm", role = "form", style = "margin-left: 20px" }))
{
<input type="hidden" id="mygender" name="mygender"/>
<button type="submit" class="btn btn-default btn-lg">Connect</button>
}