Asp.net mvc MVC<;表单操作=@Href

Asp.net mvc MVC<;表单操作=@Href,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我正在学习本教程,但在理解为什么@Href不起作用时遇到了问题 @Href我想它应该指向PostsController中的updateactionresult,但它不起作用,我看不出任何问题。如图所示,我有一个PostsController,我在PostsController中有一个PublicActionResult更新。 为什么它会说找不到路径 到本教程结束时,我可能已经没有头发了 编辑: 在这张图片中,我画了两条线,但我还是算出了另一条 更新: 您应该使用@Url.Action(“更新”

我正在学习本教程,但在理解为什么
@Href
不起作用时遇到了问题

@Href
我想它应该指向
PostsController
中的
updateactionresult
,但它不起作用,我看不出任何问题。如图所示,我有一个PostsController,我在
PostsController
中有一个
PublicActionResult更新
。 为什么它会说
找不到路径

到本教程结束时,我可能已经没有头发了

编辑: 在这张图片中,我画了两条线,但我还是算出了另一条

更新:


您应该使用
@Url.Action(“更新”、“发布”)
,它更易于使用。查找重载方法的完整列表,选择适合您需要的方法

作为表单的替代方法,您可以使用
@Html.BeginForm()
。使用示例来自:

@使用(Html.BeginForm())
{
@Html.TextBox(“名称”);
@密码(“密码”);
}

您的屏幕截图不显示控制器代码。你能给我看看吗?当然。我会在一秒钟内添加它,但我认为它不会有帮助。似乎您有一个控制器
Posts
-假设您有一个操作
更新
,它可能只是intellisense没有正确探索路线。您也可以使用
@Url.Action(“ActionName”、“ControllerName”)
来构建Url,而不是
@Href(“~/Controller/Action”)
@StuartLC。我本来想这么做的,但是它和@Href是一样的吗?是的,尽管它在IMO中稍微封装了一些。更好的是,它提供了编译时的安全性,例如
@Url.Action(MyProject.Controllers.Action())
@Tyler-试着构建并运行项目,看看是否有错误-这可能太愚蠢了。我将使用
@Url.Action(“更新”,“发布”)
@Html.BeginForm()
而不是
更有趣。谢谢。使用@Url.Action的一个关键原因是它将引用您的路由表并自动匹配任何自定义模式
   public class PostsController : Controller
{   

//UPDATE takes (id, title, body, datetime, tags)
public ActionResult Update(int? id, string title, string body, DateTime dateTime, string tags)
{ .......
}
@using (Html.BeginForm())
{
    @Html.TextBox("Name");
    @Html.Password("Password");
    <input type="submit" value="Sign In">
}