これは複数回尋ねられました。しかし、これまでのところ私は実用的な解決策を見いださなかった。MVC 5複数のビューを1つのビューで表示
Iビューで次のコードを持っている:
@using (Html.BeginForm("RoleEdit", "AccountRoles", FormMethod.Post, new { id = "updaterole" }))
{
<button name="mySubmit" formaction="@Url.Action("SetDefaultRole", "AccountRoles")" value="MakeDefault" class="button small">Make Default</button>
...
other code
...
<button type="submit" class="button small" value="save" name="save" id="save">@Resources.DashBoardTags.UpdateRoleTag</button>
}
コントローラで:
[HttpPost]
public ActionResult SetDefaultRole()
{
return View();
}
と:
[HttpPost]
public ActionResult RoleEdit(List<UserRole> userRole, string mySubmit)
{
if (mySubmit == "Save Draft")
{
//save draft code here
}
else if (mySubmit == "Publish")
{
//publish code here
}
}
コードが実行される:
-
を
最初の送信ボタンをクリックすると、SetDefaultRole関数は無視され、RoleEdit関数が実行されます。
RoleEdit関数の値mySubmitがnullです。
私の方法のエラーを表示してください!!!!
私は提案されたソリューションを見てきた:
ビュー:
コードは次のようになりますように Proposed Solutionこのことから私はMultipleButtonと呼ばれる属性の拡張機能を作成し、自分のコードを変更しました
@using (Html.BeginForm("RoleEdit", "AccountRoles", FormMethod.Post, new { id = "updaterole" }))
{
<button value="SetDefaultRole" name="action:SetDefaultRole" class="button small" formmethod="post">Make Default</button>
...
other code
...
<button value="RoleEdit" name="mySubmit:RoleEdit" class="button small" formmethod="post">@Resources.DashBoardTags.UpdateRoleTag</button>
}
コントローラ
新しい拡張機能の中で[HttpPost]
[MultipleButton(Name= "action", Argument = "SetDefaultRole")]
public ActionResult SetDefaultRole()
{
return View();
}
[HttpPost]
[MultipleButton(Name = "action", Argument = "RoleEdit")]
public ActionResult RoleEdit(List<UserRole> userRole)
{
return View();
}
は、上記提案された解決策のリンクに示すMultipleButtonAttributeが、実行され、次のコード行は、常にNULL値を返します。
controllerContext.Controller.ControllerContext.RouteData.Values[Name] = Argument;
を誰が助けることができます。あなたは以下のようにそこに名前タグからあなたのボタンを識別することができ
あなたは2 @using(Html.BeginForm 2ボタンの提出を作成しないのはなぜ? –
あなたのボタンの両方が同じ名前を持っており、それらに異なる値を与え、その後、送信された値をチェックしてください。 –
私は思います –