MVC ActionLink转到当前控制器

问题描述 投票:-1回答:3

在我的MVC网页上,我有一个像这样的ActionLink:

        @Html.ActionLink("Create", "Index", "Project")

视图是Index.cshtml,控制器是“Project”。

单击此链接时,我希望它转到控制器并执行actionResult for Create。但是当我点击它时,它想要转到/ projects / index并且没有任何反应,因为没有调用create的actionresult方法。它称为索引的动作结果。所以没有任何实际发生,页面只是刷新。

如果我将Actionlink更改为:

@Html.ActionLink("Create", "Create", "Project")

它试图转到“/ projects / create”但由于它不存在而找不到它。

我的ActionResult代码如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "projectName,projectType")] Project project)
{
  if (ModelState.IsValid)
  {
    db.Project.Add(project);
    db.SaveChanges();
    return RedirectToAction("Index");
  }

  return View(project);
}

我该如何解决这个问题?

asp.net-mvc asp.net-mvc-4
3个回答
0
投票

第一个参数是要显示的文本,第二个是动作,第三个是控制器。

使用它的正确方法是:

@Html.ActionLink("Some text", "Create", "Project")

0
投票

好的,让它提交到正确的actionResult。

我所做的是将带有输入的部分放在里面

@using (Html.BeginForm("Create","Projects"))
{
  @Html.AntiForgeryToken()
  // my html code here
  // submit button here
}

然后我用一个提交输入html替换了actionLink。

但是现在我确实得到了正确的ActionResult方法,但仍然没有数据。我会为此创建一个新问题。

感谢所有的帮助!!


0
投票

检查App_Start \ RouteConfig.cs

更改

        routes.MapRoute(
            name: "Default",
            url: "{controller}s/{action}/{id}",
            defaults: new { controller = "home", action = "Index", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "home", action = "Index", id = UrlParameter.Optional }
        );
© www.soinside.com 2019 - 2024. All rights reserved.