[編輯]
重新itterate我在其他答案的評論點:當您綁定的邏輯在C#中你要綁定你的C#代碼,該語言的按鈕的值。
想象一下,你在英文版本的保存按鈕:
<input type="submit" value="Insert" name='button' />
,並在你的代碼,你會使用值切換:
public ActionResult Index(string button)
{
switch (button)
{
case "Insert": ...
case "Update": ...
case "Delete": ...
}
return View();
}
現在 - 這種形式被觀察時,用另一種語言 - 你認爲會發生什麼?!?!
這裏是威爾士HTML輸出:
<input type="submit" value="Mewnosod" name='button' />
和德國:
<input type="submit" value="Einfügen" name='button' />
如何有史以來去上班?
全球化不是一個單獨的問題!!!!
你的動作會是這樣的,如果你用這個方法:
public ActionResult Index(string button)
{
switch (button)
{
case "Insert": ...
case "Update": ...
case "Delete": ...
case "Einfügen": ...
case "Mewnosod": ....
.... a load of other languages for each action type -
}
return View();
}
請認真... ....
[/編輯]
這裏是我的MVC動作選擇代碼:Asp.Net Mvc action selector
實質上你需要一個動作選擇器類:
/// <summary>
/// AcceptParameterAttribute to enable submit buttons to execute specific action methods.
/// </summary>
public class AcceptParameterAttribute : ActionMethodSelectorAttribute
{
/// <summary>
/// Gets or sets the value to use in submit button to identify which method to select. This must be unique in each controller.
/// </summary>
public string Action { get; set; }
/// <summary>
/// Determines whether the action method selection is valid for the specified controller context.
/// </summary>
/// <param name="controllerContext">The controller context.</param>
/// <param name="methodInfo">Information about the action method.</param>
/// <returns>true if the action method selection is valid for the specified controller context; otherwise, false.</returns>
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
if (controllerContext == null)
{
throw new ArgumentNullException("controllerContext");
}
var req = controllerContext.RequestContext.HttpContext.Request;
return req.Form.AllKeys.Contains(this.Action);
}
}
哪個作品的名字你給按鈕。
您可以再與裝飾操作:
[AcceptParameter(Action = "Edit")]
public ActionResult Person_Edit(PersonViewModel model){
...
}
切換動作是髒 - 這是一個更清潔的方式。我覺得也更自然。
這裏是該代碼與列表(數據綁定)支持的更新版本:http://blogs.sonatribe.com/wayne/2011/06/15/171/ – iwayneo 2011-06-15 07:53:38
我試過這個......但我是得到一個錯誤信息像「Sample.Controllers.AcceptParameterAttribute」不包含一個構造函數,它帶有1個參數「 – san 2011-06-15 09:19:08
ooops抱歉!我的錯誤 - 你需要使用可選的args方法:[AcceptParameter(Action =「Edit」)] – iwayneo 2011-06-15 09:21:11