我有一个部分视图,我需要重复使用:
div class="selectDate">
@using (Html.BeginForm("ViewTransactionLog", "Profile", FormMethod.Get))
{
<div class="selectDateLabel">Date:</div>
<div>
@Html.TextBox("start", range.Start, new { @class = "pickDate" }) to @Html.TextBox("end", range.End, new { @class = "pickDate" })
</div>
<div>
<input type="submit" value="Go" />
</div>
}
</div>
这是挑选2个日期的代码。由于数据是轻量级的,我希望通过Get方法传递它。我也希望将其概括并将其放入自己的cshtml中;但是,Html.BeginForm
期望在我希望使用Get方法时给出控制器名称和操作名称。反正是为了避免这种情况,所以我可以将代码移动到自己的部分视图中吗?
答案 0 :(得分:4)
假设您希望表单回发到当前控制器和操作,您应该能够使用扩展方法:
public static MvcForm BeginForm<TModel>(
this HtmlHelper<TModel> html,
FormMethod formMethod)
{
string controller = (string)html.ViewContext.RouteData.Values["controller"];
string action = (string)html.ViewContext.RouteData.Values["action"];
return html.BeginForm(action, controller, formMethod);
}