MVC4多按钮形式不起作用JQM

时间:2014-05-27 20:42:10

标签: c# asp.net-mvc asp.net-mvc-4 jquery-mobile

我在MVC4中遇到了一个奇怪的问题:

我有一个带有几个像这样的texbox的表单

@using Models
@model Models.DataModel.Pagina_Details
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}


@using (Html.BeginForm("Pagina_Details", "Home", FormMethod.Post, new { id =          "PaginaDetailsForm" }))
{
if (Request.QueryString["Command"] != null)
{
    Session["Command"] = Request.QueryString["Command"];
}
else
{
    Response.Redirect("Index");
}
<div class="ui-corner-all custom-corners ui-shadow">
  <div class="ui-bar ui-bar-a">
    <h3>Pagina's</h3>
  </div>
<div class="ui-body ui-body-a">
 <input type="hidden" id="Command" />
  @Html.HiddenFor(model => model.ID)
 @Html.LabelFor(model => model.Name, "Naam *", new { @class = "lbl"})    
 @Html.TextBoxFor(model => model.Name, new { required = "required" })

 @Html.LabelFor(model => model.Description, "Omschrijving *", new { @class = "lbl"})    
 @Html.TextArea("Description", new { required = "required", rows="10", cols="80"})

 @Html.LabelFor(model => model.MetaDescription, "Meta description", new { @class =  "lbl" })    
 @Html.TextBoxFor(model => model.MetaDescription)

 @Html.LabelFor(model => model.MetaKeywords, "Meta keywords", new { @class = "lbl" })    
 @Html.TextBoxFor(model => model.MetaKeywords)

 @Html.LabelFor(model => model.Active, "Actief", new { @class = "lbl" })   
 @Html.CheckBoxFor(model => model.Active)

@if (Session["Command"] == "Insert" || Request.QueryString["Command"] == "Insert")
{
    <button type="submit" name="Command" data-role="button" data-icon="plus">Toevoegen</button>
}       
@if (Session["Command"] != "Insert" && Request.QueryString["Command"] != "Insert")
{
    <button type="submit" id="Edit" name="Command" value="Opslaan" data-role="button" data-icon="edit">Opslaan</button>
    <button type="submit" id="Verwijderen" name="Command" value="Verwijderen" data-role="button" data-icon="delete">Verwijderen</button>
}

</div>

</div>

}

在我的ActionResult(Controller)中我有param命令 并在交换机中使用它来解决问题 在桌面浏览器上它运行良好,我可以看到命令传递给ActionResult,一切正常,因为它应该是但由于某种原因,当我 使用Phonegap在我的手机上尝试相同的操作,Command值将始终为null

我尝试了什么: AttributeUsage How do you handle multiple submit buttons in ASP.NET MVC Framework? 根本没有结果。

我也为2个按钮尝试了不同的ActionResults 根本没有结果。

我失去了有人知道一些提示或有任何想法如何我可以解决这个问题。 你的时间和帮助。

2 个答案:

答案 0 :(得分:1)

这可能不是您要查找的内容,但为什么不将这些按钮用作javascript函数,这些函数可能会在提交之前更改表单的操作。我认为这是保持逻辑清洁和简单修复的好方法。由于你使用phonegap javascript不应该是一个问题。祝你好运!

<script type="text/javascript">
document.getElementById("edit").onclick = function() {
 a=document.getElementsByTagName("form")[0];
a.action ="URL for Edit";
a.submit();
 }
document.getElementById("Verwijderen").onclick = function() {
 a=document.getElementsByTagName("form")[0];
a.action ="URL for Verwijderen";
a.submit();
 }

</script>

希望这有助于! -DREW

答案 1 :(得分:1)

试试这个:

如果你想使用多个提交按钮,那么你必须使用传递FormCollection Form参数来发布这样的帖子

如果您想使用多个提交按钮,请先更改您的输入按钮名称,然后将提交按钮代码更改为:

@if (Session["Command"] != "Insert" && Request.QueryString["Command"] != "Insert")
{
    <button type="submit" id="Edit" name="CommandBtn1" value="Opslaan" data-role="button" data-icon="edit">Opslaan</button>
    <button type="submit" id="Verwijderen" name="CommandBtn2" value="Verwijderen" data-role="button" data-icon="delete">Verwijderen</button>
}

现在On Home控制器事件的​​动作Pagina_Details写成:

[HttpPost] 
public ActionResult Pagina_Details(FormCollection Form,ModelClassName ModelClassObject)
{
if(Form["CommandBtn1"]!=null)
{
/// Write code for Opslaan (Edit Code)
}
if(Form["CommandBtn2"]!=null)
{
/// Write code for Verwijderen (Delete Code)
}
return View();
} 

希望它的作品。