2011-07-12 63 views
1

我有我需要重新使用的部分視圖:設置形式方法來獲得,而無需指定控制器和動作

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;但是,如果我希望使用Get方法,Html.BeginForm需要給出控制器名稱和操作名稱。無論如何要避免這一點,所以我可以將代碼移動到它自己的部分視圖中?

回答

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); 
} 
相關問題