如何让剃刀形式使用路线(how to get Razor form to use route)

2019-10-17 12:58发布

我有一个剃刀形式

using (Html.BeginForm("TermList", "Course", FormMethod.Get))
{

    <div style="text-align:right;display:inline-block; width:48%; margin-right:25px;">
             @Html.DropDownList( "id", (SelectList) ViewBag.schoolId)
    </div>
    <input type="submit" value="Choose school" />
}

我希望这种形式张贴到的URI:

http://localhost:56939/Course/TermList/764

替代路线是这样的:

http://localhost:56939/Course/TermList?id=764

不被使用的路由。 我想和参数做掉

?id=764

Answer 1:

究其原因?id=764被添加到URL是因为你使用FormMethod.Get 。 你要与你的表单一起传递的任何值将在查询字符串添加。 您需要使用FormMethod.Post

@using(Html.BeginForm("TermList", "Course", FormMethod.Post))
{
    ... Your form stuff here ...
}

这将导致表单操作http://localhost:56939/Course/TermList/

如果你想发布到http://localhost:56939/Course/TermList/764 ,你需要通过id参数在Html.BeginForm声明:

@using(Html.BeginForm("TermList", "Course", new { @id = 764 }, FormMethod.Post))
{
    ... Your form stuff here ...
}

显然,而不是硬编码764只使用任何变量,它是存储价值。



文章来源: how to get Razor form to use route