Forms 如何使用C#MVC将数据从视图中的窗体传递到另一个控制器?

Forms 如何使用C#MVC将数据从视图中的窗体传递到另一个控制器?,forms,post,model-view-controller,view,controller,Forms,Post,Model View Controller,View,Controller,如果我的表单需要使用文本框输入,如下所示: @{ if(IsPost){ username = Request.Form["username"] } } <form action="Home/Index" method="post"> <input type="text" name="username" /> <input type="submit" value="submit" /> &l

如果我的表单需要使用文本框输入,如下所示:

@{
    if(IsPost){
      username = Request.Form["username"]
    }

}
    <form action="Home/Index" method="post">
      <input type="text" name="username" />
      <input type="submit" value="submit" />
    </form>
似乎没有从post方法传递数据。当我点击submit时,它请求的URL是Home/Home/Index,如果控制器(HomeController)操作不在其中,它应该是Home/Index,并使用HomeController,对吗


如果我需要将此数据传递给另一个具有操作索引的控制器(如UserController),该怎么办?

在本例中,您缺少一个斜杠

<form action="/Home/Index" method="post">
  <input type="text" name="username" />
  <input type="submit" value="submit" />
</form>

但是当使用asp.net mvc时,您应该使用Url.Content和主目录字符,以确保如果您的站点部署在该站点的子目录中,将找到正确的根目录。因此,请使用:

<form action="@Url.Content("~/Home/Index")" method="post">
  <input type="text" name="username" />
  <input type="submit" value="submit" />
</form>


哇,真不敢相信!我通过添加缺少的斜杠来修复它。但是为什么要使用Url.Content呢?这是因为在其他站点下部署时,它找不到/Home/Index或索引文件吗?Url.Content是否更具体地定位该Url?是的,如果您部署在网站(如www.site.com/MySite/Home/Index)的子目录中,则仅使用/Home/Index将转到MySite上缺失的www.site.com/Home/Index。将Url.Content与~/一起使用将正确找到应用程序根目录。
<form action="@Url.Content("~/Home/Index")" method="post">
  <input type="text" name="username" />
  <input type="submit" value="submit" />
</form>