asp.net mvc actionlink показывает адрес в FF, не может получить кнопку для работы - PullRequest
1 голос
/ 21 июля 2009

В настоящее время я изучаю ASP MVC и сталкиваюсь с несколькими проблемами.

Во-первых, когда я использую

<%=Http.ActionLink("Add / Modify", "AddModify" %>

будет отображаться как Добавить / Изменить (/ Home / AddModify) в Firefox и Добавить / Изменить в IE. Он делает это со всеми ссылками в FF и ни в IE. Кто-нибудь знает, что это за рассуждение?

Редактировать: в браузере отображается (в данном случае FF) «Добавить / изменить (/ Home / AddModify)», а в IE отображается просто «Добавить / изменить».
Вот скриншот того, что я вижу на своем сайте в FireFox: http://img6.imageshack.us/img6/1331/19748435.png

Вы можете увидеть, как он показывает текст и соответствующую ссылку впоследствии (только заполняется в базе данных с /).

Кроме того, я пытаюсь разместить на своем сайте кнопки (стандартные и графические), которые будут ссылаться на новые страницы, а также выполнять скрытые задачи (сохранение данных и т. Д.). В любом случае, когда я делаю следующее:

<form method="post" action="/Home">
    <input type="submit" value="AddModify">
</form>

и контроллер имеет простой

[ActionVerbs(HttpVerbs.Post)]
public ActionResult AddModify()
{
    return View();
}

И я до сих пор не могу заставить эту функцию вызываться, но когда я выполняю http://localhost:port/Home/AddModify,, функция вызывает и я могу попасть на эту страницу. Я делаю это таким образом, потому что может быть код, который должен выполняться перед перенаправлением на эту страницу, а не просто прямая ссылка на эту страницу. Я пробовал с и без строки ActionVerbs, я пробовал эту форму HTML-формы:

<% using (Html.BeginForm()) { %> ... <%}%>

и до сих пор ничего. Я также не пробовал никакой формы и все еще ничего, но вот кое-что, что может повлиять на это ... Я использую главную страницу со всем внутри заполнителя содержимого внутри формы, которая использует runat = "server". Будет ли это иметь значение? Таким образом, его главная страница -> форма (сервер Runform masterform) -> ContentPlaceHolder -> форма (для обратной передачи и действия) -> кнопка отправки. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 21 июля 2009

Если я правильно думаю, ваша форма действия должна вызывать имя метода действия:

<form method="post" action="/Home/AddModify">
    <input type="submit" value="AddModify">
</form>

ActionLink будет таким же образом.

В противном случае вам потребуется изменить маршруты, чтобы перейти к этому методу действия по умолчанию.

0 голосов
/ 21 июля 2009

Давайте сделаем это в двух частях

1 Я думаю, что ваша ActionLink должна быть:

<%=Http.ActionLink("Add / Modify", "AddModify", "Home") 

... форсировать маршруты.

Первый параметр: показан текст Второй параметр: имя действия Третий параметр: имя контроллера

2 Измените кнопку отправки на: (я предполагаю, что в настоящее время мы смотрим на ваше действие «index» с вашего контроллера «Home»)

<form method="post" action="/Home">
    <input type="submit" value="AddModify" name="ModifyBtn" >
</form>

Тогда в вашем контроллере Home:

редактирование:

//GET
public ActionResult Index()
{
    return View();
}

/ редактировать

[ActionVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection form, string ModifyBtn, string OtherBtn)
{
   if (ModifyBtn!=null)
   {
      //do stuff
      return RedirectToAction("AddModify");
   }

   if (OtherBtn!=null)
   {
      //do stuff
      return RedirectToAction("OtherAction");
   }

return View();
}

редактировать: Я думаю, что вы пытаетесь подчиниться непосредственно другому действию. Лучший способ - обработать метод POST внутри вашего кода, а затем перенаправить на другое действие. Таким образом, вы можете использовать

<% using (Html.BeginForm()) { %>

без проблем.

0 голосов
/ 21 июля 2009

<form method="post" action="/Home">

Создает форму с href /Home, это вызовет действие AddModify, только если на этом маршруте действие AddModify установлено по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...