提交表单... MVC3时获取查询字符串值(Get query string values when

2019-09-19 06:32发布

在我MVC3应用程序,如果我在URL中的查询字符串值类型,敲回车,我可以得到我输入的值:

localhost:34556/?db=test

我的默认操作时会触发:

public ActionResult Index(string db)

变量DB具有“测试”在里面。

现在,我需要提交一个表单和读取查询字符串值,但是当我通过jQuery提交表单:

       $('#btnLogOn').click(function(e) {
         e.preventDefault();
             document.forms[0].submit();
         });

而下面的是我送的形式:

   @using (Html.BeginForm("LogIn", "Home", new { id="form1" }, FormMethod.Post))

继承人的行动:

  [HttpPost]
    public ActionResult LogIn(LogOnModel logOnModel, string db)
    {
        string dbName= Request.QueryString["db"];
     }

变量DBNAME为null,因为的Request.QueryString [“DB”]为空,所以是分贝正在传递的变量,我不知道为什么。 有人可以帮助我得到的查询字符串变量表单提交后? 谢谢

Answer 1:

你可能有这样的事情

控制器:

[HttpGet]
public ActionResult LogIn(string dbName)
{
    LogOnViewModel lovm = new LogOnViewModel();
    //Initalize viewmodel here
    Return view(lovm);

}

[HttpPost]
public ActionResult LogIn(LogOnViewModel lovm, string dbName)
{
    if (ModelState.IsValid) {
        //You can reference the dbName here simply by typing dbName (i.e) string test = dbName;
        //Do whatever you want here. Perhaps a redirect?
    }
    return View(lovm);
}

视图模型:

public class LogOnViewModel
{
    //Whatever properties you have.
}

编辑:固定它为您的需求。



Answer 2:

由于您使用POST,你正在寻找的数据是Request.Form代替Request.QueryString



Answer 3:

正如@ ThiefMaster♦说,在后你不能有查询字符串,从来没有,如果你不wan't您的数据序列的特定对象,你可以使用较少FormCollection Object ,它允许你把所有的表单元素通过邮寄传递到服务器

例如

[HttpPost]
public ActionResult LogIn(FormCollection formCollection)
{
    string dbName= formCollection["db"];

}


文章来源: Get query string values when submitting a form…MVC3