【发布时间】:2013-10-21 14:44:20
【问题描述】:
查看
@using (Html.BeginForm())
{
...form elements
@Html.Action("PartialView")
}
部分视图
if (something) {
<input type="submit" value="Submit" />
} else {
@using (Html.BeginForm())
{
<input type="submit" value="Submit" />
}
有人可以提出解决上述问题的方法吗?
如果 PartialView if 语句返回 false,我将得到嵌套表单。我可以在局部视图中移动表单右括号以避免嵌套表单并且页面正确呈现,但这会使 Visual Studio 感到不安,因为它希望在视图中看到右括号。这有关系吗?
编辑:
基于 Chris 的 cmets,以下修改是更好的方法吗?即一个表单有两个提交按钮,在同一个操作方法中调用不同的代码?
部分视图
if (something) {
<input type="submit" name="btn" value="Submit1" />
} else {
<input type="submit" name="btn" value="Submit2" />
}
控制器
[HttpPost]
public ActionResult Index()
{
if (btn == "Submit1") {
...do a thing
} else {
...do another thing
};
}
【问题讨论】:
-
请
dont use <form> inside another <form> -
谢谢穆拉利。那就是问题所在。解决办法是什么?
-
你能不能设计局部视图,使其不必拥有自己的
Html.BeginForm? -
也许我必须这样做,克里斯。目前,每个表单调用不同的操作方法。也许他们都应该调用相同的操作方法,其中包含一个 if 语句,根据调用的形式返回 true 或 false。
-
我会说这将是一个更好的方法。在 Web 表单中,子表单总是一个问题,因为整个页面都是一个表单。因此,为每个“表单”简单地命名提交按钮是非常典型的。它们并不是真正独立的表单,但是通过给提交按钮一个唯一的名称,您可以检查它是否存在于服务器端的发布数据中,并确定用户发布了哪个“表单”。
标签: asp.net-mvc razor partial-views