【问题标题】:How do you pass post form variables in ASP.NET C#/Razor?如何在 ASP.NET C#/Razor 中传递表单变量?
【发布时间】:2017-03-10 12:22:49
【问题描述】:

我是 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>

【问题讨论】:

  • 目前还没有 MVC 方法。我正在尝试像在具有服务器端脚本的一般网站中那样传递数据。

标签: c# asp.net forms post razor


【解决方案1】:

在输入类型“提交添加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"/>

   }

【讨论】:

    【解决方案2】:

    如果你需要在 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" />
        }
    

    在这个 sn-p 之后,您可以看到您需要一个控制器,并根据此处给出的名称命名一个 ActionResult,此外,您可以指定是仅在发布时使用该操作还是仅用于获取表单

    一个可能的例子可以是如下代码的编辑

        [HttpPost]
        public ActionResult YourAction(Employee emp)
        {
            if (ModelState.IsValid)
            {
                // do smth.
            }
    
            return View("Name Of the view");
        }
    

    请注意,您需要在控制器中定义它,并且属性 HttpPost 让 Asp 知道这是一个仅发布的 ActionResult。这意味着只有发布请求才能使用此方法。此外

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

    你可以看看这个论坛 entry

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2017-05-22
      相关资源
      最近更新 更多