我使用局部视图。在它里面我有:
@using (Html.BeginForm("MyMethod", "MyController", FormMethod.Post))
{
<input type="submit" id="btn1" name="btnSubmit" value="Add record" />
<input type="submit" id="btn2" name="btnSubmit" value="Use record" />
}然后在控制器HttpPost方法中,我有:
[HttpPost]
public ActionResult MyMethod(string btnSubmit)
{
...
}问题是btnSubmit始终为空。我尝试直接调用这个分部视图,它返回正确的值。
你知道怎么解决这个问题吗?提前谢谢。
发布于 2013-09-20 14:09:27
我试着执行你的代码,不管是直接调用局部视图还是在另一个视图中调用,都运行得很好。
无法识别源文件中的问题所在。我想你必须提供更多关于这方面的信息。
以下是我在我的解决方案中尝试的方法。您可以查看它是否对您有帮助
局部视图:
@using (Html.BeginForm("MyMethod", "Home", FormMethod.Post))
{
<input type="submit" id="btn1" name="btnSubmit" value="Add record" />
<input type="submit" id="btn2" name="btnSubmit" value="Use record" />
}控制器:
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult MyMethod()
{
return PartialView();
}
[HttpPost]
public ActionResult MyMethod(string btnSubmit)
{
return RedirectToAction("Index");
}并在索引视图中添加了以下行:
@Html.Action("MyMethod")发布于 2013-09-20 17:44:49
你想的是“MVC Forms”的方式,在这种方式下,你的事件与触发它们的元素有关的信息在ASP.NET中没有这样的概念。
在MVC中,您需要拥有并调用不同的操作(控制器方法)来完成您想要做的任何事情。此操作可以有参数。如果此参数具有正确的名称,则它们将接收已发布的数据。在您的示例中,您希望btnSubmit“自动”获取按钮的名称,但这不会以任何方式发布。
你可以用3种不同的方法来解决这个问题:
onclick按钮事件)时,用所需的信息填充它。UrlHelper来获取要发布的操作的url。(在提交按钮onclick中单击表单的method).
第二种解决方案涉及以下两种技术中的一种:
的"data- formaction“属性。
https://stackoverflow.com/questions/18906421
复制相似问题