如何使用MVC将URL参数传递给表单字段

时间:2013-11-13 15:20:21

标签: asp.net asp.net-mvc asp.net-mvc-4 parameters

我想创建一个注册网址,该网址会在MVC中使用网址参数预先填充注册页面。例如,我有3个文本格式输入txtName,txtEmail和txtCode。当用户点击URL中嵌入的名称,电子邮件和代码的注册链接时,他们将到达注册页面,这些字段已经填充,所以他们所要做的就是选择密码并单击注册。

  1. 这可以使用URL和仅查看来完成,还是需要涉及控制器或模型?

  2. 此示例中的URL如何显示www.somedomain.com/home/register

  3. MVC中需要实现哪些代码?

2 个答案:

答案 0 :(得分:1)

一种可行的方法是在DOMContentLoaded上运行JavaScript,它将获取您的查询字符串参数并预先填充适用的表单字段。您也可以通过访问Request.QueryString集合并填充适用的输入字段在服务器端执行此操作。

答案 1 :(得分:1)

MVC的方法是让控制器和模型都参与进来。

  1. 创建一个包含注册表单字段的视图模型类。
  2. 将视图模型添加为控制器方法的单个参数。
  3. 将该视图模型直接发送到视图。
  4. 网址格式为http://example.com/home/register?Name=Anders

    控制器非常简短:

    public ActionResult register(RegisterViewModel model)
    {
      return View(model);
    }
    

    ViewModel应包含表单中存在的所有属性:

    public class RegisterViewModel
    {
      public string Name { get; set; }
      public string Email { get; set; }
      public string Code { get; set; }
    }
    

    在视图中,使用Html帮助程序来构建表单。

    @model RegisterViewModel
    
    // Html header, body tag etc goes here...
    
    @using(Html.BeginForm())
    {
      @Html.LabeFor(m => m.Name)  
      @Html.EditorFor(m => m.Name) 
      @Html.ValidationMessageFor(m => m.Name)
      // Rest of fields goes here
      <button>Submit</button>
    }