我有一个部分视图,由几个操作方法返回的几个视图呈现。
部分视图的形式应该回发给被调用的操作方法。
我的理解是,如果我只是致电
<% Html.BeginForm(); %>
从视图中,表单的action属性将指向被调用的action方法。 我不能这样做,因为我需要为javascript目的设置表单的ID属性。 Html.BeginForm的重载让我设置html属性也需要一个显式的控制器和动作。因此,我可以将表单元素写成:
,而不是使用Html帮助器<form action="<%=(NEED TO SOMEHOW GET THE URL TO THE CURRENT ACTION) %>" method="post" id="myForm">
我只是不确定如何获取网址。
答案 0 :(得分:15)
只需为控制器和操作传递null。正确的值将被替换。 E.g:
<% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "employeeGroupForm" }))
答案 1 :(得分:2)
ViewContext.RouteData.Values [ “行动”]
或者类似的东西可以完成工作
答案 2 :(得分:0)
在这种情况下,我可能只是让控制器(或父视图)在模型/ ViewData中放置适当的目标URL。
至于如何,在你的控制器内:
public ActionResult MyAction() {
MyModel m = new MyModel();
...
m.MyControlAction = "MyAction";
m.MyControlController = "MyController";
return View("MyView", m);
}
然后在你看来:
Html.RenderPartial("MyControl", ViewData.Model);
在您的部分视图中:
Html.BeginForm(ViewData.Model.MyControlController, ViewData.Model.MyControlAction, ...)
对于更简洁的设计,您可能希望MyControlController和MyControlAction成员来自使用该控件的每个Model必须实现的接口。然后让局部视图采用具有该接口类型的强类型模型。