0

假设我有一个表格,表格有两个 div 容器。一个 div 容器有几个用于提交登录详细信息的文本框,另一个 div 也有几个与注册相关的文本框。现在我的家庭控制器有两种操作方法,一种是登录,另一种是注册。我希望当用户单击登录按钮时,我将通过 jquery 提交表单,但在提交之前我将更改操作 url。当用户单击注册按钮时,我想以同样的方式调用注册操作方法。请指导我如何使用 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 u<label> Name</label>在表单构建代码中使用。在 html4 中是否有任何标签?它是 html5 特定标签吗?

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

当你建立下拉菜单时,为什么你没有指定值和文本文件...... mvc如何理解什么字段是值和什么是文本?你只需用 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服务器端的变量可以保存按钮名称。

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

4

1 回答 1

0

我希望当用户单击登录按钮时,我将通过 jquery 提交表单,但在提交之前我将更改操作 url。当用户单击注册按钮时,我想以同样的方式调用注册操作方法。

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)您可以在其中指定的文本和值中构建您IEnumerableSelectListItem

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

于 2013-07-17T08:57:38.557 回答