2015-12-01 2 views
-1

На моей странице MVC У меня есть ActionLink вроде этого:MVC ActionLink для перехода к регулятору тока

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

Вид на Index.cshtml и контроллер является «Проект».

При нажатии на эту ссылку я хочу, чтобы она шла к контроллеру и делала actionResult для Create. Но когда я нажимаю на него, он хочет перейти в/projects/index , и ничего не происходит, потому что метод actionresult для create не вызывается. Он вызывает действие для индекса. Так что ничего на самом деле не происходит, страница просто обновляется.

Если изменить ActionLink на:

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

он пытается перейти к «/ проектов/создать», но не может найти его, потому что он не существует.

Мой 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); 
} 

Как решить эту проблему?

+0

Url is '/ projects/index', и вы используете' Project' show your Project controller – Satpal

+0

Итак, у вас есть контроллер с именем: ProjectController с методом действий Create, а также модель с именем Project? – MaticDiba

+0

Да, хотя VS2015 добавляет имя s, чтобы он назывался ProjectsController. Не делайте почему VS ставит там s. – Eric

ответ

0

Ok, получил его представить правой ActionResult.

То, что я сделал, поставив раздел с входом в

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

и я заменил ActionLink с входным представить HTML.

Но теперь я получаю правильный метод ActionResult, но данных нет. Я создам для этого новый вопрос.

спасибо за помощь!

0

Первый параметр - текст, который вы хотите отобразить, второй - действие, третий - контроллер.

Правильный путь, чтобы использовать его было бы:

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

Создали ли вы свое действие: public ActionResult Create() {return view()} в вашем контроллере Project , – MaticDiba

+0

В случае, указанном выше, вы определили метод ActionResult, который отвечает на метод Post.С actionlink вы не создаете почтовый вызов. Проверьте: http://stackoverflow.com/questions/2048778/asp-net-mvc-actionlink-and-post-method – MaticDiba

+0

Я скопировал это из кода по умолчанию Visual Studio генерирует, когда вы создаете веб-сайт MVC. – Eric