如何在ASP.NET C#/ Razor中传递post表单变量?

时间:2016-10-27 17:40:36

标签: c# asp.net forms post razor

我是C#/ Razor的新手,不知道如何使用post方法传递表单数据。这是我尝试过的:

在login.cshtml中:

string username = Request.Form["username"];
string password = Request.Form["password"];

string username = Request.Form.Get("username");
string password = Request.Form.Get("password");

在_AppStart.cshtml中,我尝试了:

AppState["username"] = HttpContext.Current.Request.Form["username"];
AppState["password"] = HttpContext.Current.Request.Form["password"];

全部没有任何回报。

这是login.cshtml中的表单元素:

<form action="index.cshtml" method="post" data-ajax="false">
    <input type="text" name="username" placeholder="Username">
    <input type="password" name="password" placeholder="Password">
    <button type="submit">Login</button>
</form>

2 个答案:

答案 0 :(得分:0)

如果你需要在MVC控制器和View之间传递数据,那么你必须让Asp知道控制器要调用哪个动作。

要完成此任务,您可以在剃刀中使用类似BeginForms的内容,并指定所需的信息。

这看起来像这样:

    @Html.BeginForm("YourAction", "YourController", FormMethod.Post){ 
      @Html.TextBoxFor(employee => employee.FirstName);
      @Html.TextBoxFor(employee => employee.LastName);
      @Html.TextBoxFor(employee => employee.Age);
      <input type="submit" value="Edit" />
    }

根据此片段,您可以看到您需要一个控制器,并根据此处给出的名称命名一个ActionResult,此外,您可以指定是仅在发布时还是仅为获取表单而执行操作

可能的例子可能是编辑,如下面的代码

    [HttpPost]
    public ActionResult YourAction(Employee emp)
    {
        if (ModelState.IsValid)
        {
            // do smth.
        }

        return View("Name Of the view");
    }

注意你需要在你的Controller中定义它,并且属性HttpPost让Asp知道这只是一个帖子只有ActionResult。这意味着只有帖子请求才能使用此方法。此外

如果您希望获得此ActionResult的get和post请求,那么您只需删除该属性,然后默认情况下它将在get和set请求中可用。

你可以看一下这个论坛 entry

答案 1 :(得分:0)

在输入类型“submit add formaction =”ActionMethodName“

 @using (Html.BeginForm("MethodName", "ControllerName", FormMethod.Post, new { enctype = "multipart/form-data" }))
   {
        <input type="file" name="postedFile"/>
        <input type="submit"  **formaction="UploadData"** value="UploadData"/>

   }