想要在ASP.Net MVC中模拟回发

时间:2013-07-17 08:47:41

标签: asp.net-mvc

假设我有一个表单,表单有两个div容器。一个div容器有很少的文本框用于提交登录详细信息,另一个div也有几个与注册相关的文本框。现在我的家庭控制器有两个动作方法,一个是登录,另一个是注册。我希望当用户点击登录按钮然后我将通过jquery提交表单但在提交之前我将更改动作网址。当用户点击注册按钮时我想调用注册动作方法的方式相同。请指导我如何使用jquery在mvc中执行此操作。请帮我提供示例代码。

另一个人像其他论坛一样回答。

@model MvcForums.Models.StudentModel 

@{ 

    using(@Html.BeginForm("Create","Student", FormMethod.Post)) 
    { 

        <label> Name</label> 
        @Html.TextBoxFor(m=>m.FirstName) <br/> 
        <label> From country:</label> 
        @Html.DropDownListFor(m=>m.CountryId, Model.Countries,"--please select-- ") <br/> 

        <input id="btnSave" value ="Login" type="submit" name="commandName"/> 
        <input id="btnRegister" value ="Register" type="submit" name="commandName"/> 
    } 

}


[HttpPost] 
public ActionResult Create(StudentModel studentModel, string commandName) 
{ 

    if(commandName == "Login") 
    { 

    } 
    else if(commandName == "Register") 
    { 

    } 

    return View("Index"); 
}
在读完他的回答之后,我脑子里出现了一些混乱,因为我是mvc的新手,而且如下:

首先,对于格式错误,你的代码不可读。我是mvc的新手......只是学习它。阅读你的代码后会出现一些混乱。

1)为什么额外的括号你给了@{ }

2你在表单构建代码中使用<label> Name</label>。在html4中是否有任何标签?它是html5特定标签吗?

3)@Html.DropDownListFor(m=>m.CountryId, Model.Countries,"--please select-- ")

当你构建下拉列表时为什么你没有指定价值&amp;文件提交....... mvc如何理解哪个字段会有价值&amp;什么是文字?你只需用DropDownListFor()

绑定模型

4)只是看到它

<input id="btnSave" value ="Login" type="submit" name="commandName"/>
<input id="btnRegister" value ="Register" type="submit" name="commandName"/>

按钮名称都是commandName?这是对的吗?

当用户点击任何按钮时,按钮名称将如何传递给

public ActionResult Create(StudentModel studentModel, string commandName)

Create()方法?请告诉我如何将隐式命令名称传递给服务器端的Create() and how commandName变量,该变量可以保存按钮名称。

阅读你的代码后,我有太多的困惑。如果可能的话,请详细讨论我的所有观点。感谢

1 个答案:

答案 0 :(得分:0)

  

我希望当用户点击登录按钮然后我将提交表单   通过jquery但在提交之前我将更改动作网址。相同   我希望在用户点击注册时调用注册动作方法   按钮。

<强> 1。点击按钮时的活动:

$(function(){
     $("#btnSave").click(function(){
        $("#btnSave").closest("form").attr("action", "/home/test");
     });

});

<强> 2。标记

<form method="POST" action="/home/test1" >

    <input id="btnSave" value="Login" type="submit" name="commandName"/>

</form>

第3。服务器端:

  [HttpPost]
    public ActionResult Test(string commandName)
    {
        return null;
    }

1)Razor语法参考http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

2)<label>不是特定的html5代码,但在html5中有其他属性,http://www.w3schools.com/tags/tag_label.asp

3)您可以构建指定文本和值<{p>的IEnumerable SelectListItem

4)如果您不想在服务器端捕获客户端值input,则commandName名称value ="Login"并不重要,