Как вызвать метод контроллера из HTML-страницы в asp.net? - PullRequest
0 голосов
/ 02 января 2012

В приложении, над которым я работаю, у меня есть Html-страница в папке представлений, и я упомянул следующее действие.

  <form name="form" onsubmit="return validateForm();" method="post" action="//Controllers/RegistrationController.cs">

Контроллер регистрации возвращает представление.

public ActionResult Detail(string name)
        {

            return View();
        }

Когда я запускаю программу, я получаю сообщение об ошибке «сервер не найден».

Я также попытался изменить строку действия на action="//Controllers/RegistrationController.cs/Detail" но получил ту же ошибку.

Должна ли строка действия быть написана другим способом?

Большое спасибо заранее за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 02 января 2012

Предполагая, что вы используете маршруты по умолчанию ({controller}/{action}/{id}), вам нужно:

action="/Registration/Detail"

На самом деле я бы порекомендовал вам использовать помощники HTML для генерации форм и никогда не кодировать их жестко, как вы:

@using (Html.BeginForm("Details", "Registration", FormMethod.Post, new { name = "form", onsubmit = "return validateForm();" }))
{
    ...
}
1 голос
/ 02 января 2012

/registration/detail - вам не нужно указывать путь к фактическому файлу.Фреймворк находит класс контроллера и вызывает для вас запрошенное действие.Маршруты, определенные в global.asax.cs, используются для определения контроллера и действия по URL.Маршрут по умолчанию - {controller}/{action}/{id}, где первые два имеют значения по умолчанию «Дом» и «Индекс» соответственно, а третий является необязательным.Вы можете изменить это, если хотите, добавив / изменив настроенный маршрут.

1 голос
/ 02 января 2012

Описание

Вам не нужно устанавливать путь, как в вашем решении.Вам не нужно устанавливать Controllers, потому что фреймворк знает, что вы имеете в виду контроллер.

Если вы не измените маршрутизацию в global.asax, ваш RegistrationController.cs имеет ActionMethod с именем Detail (украшенный [HttpPost]) и следующую структуру папок в вашем проекте.*

Контроллеры / RegistrationController.cs

Представления / Регистрация / Detail.cshtml

@using (Html.BeginForm("Detail", "Registration", FormMethod.Post, new { @onSubmit =     "return validateForm();" }))
{
    // Your Form's content
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...