2013-05-17 4 views
0

Я новичок в asp.net mvc. Я имею в представлении Home.cshtmlСобытие Asp Mvc Перенаправление

<button name ="del" style="width:150px; height:30px;text-decoration:none;color:white;text-align:center;background-color:darkcyan;padding:5px;border-style:outset;border-width:2px;border-color:darkcyan" onclick="@Url.Action("Delete", "Super",1)">Supprimer</button> 
<button name ="edit"style="width:150px; height:30px;text-decoration:none;color:white;text-align:center;background-color:darkcyan;padding:5px;border-style:outset;border-width:2px;border-color:darkcyan" onclick="@Url.Action("Edit", "Super","val")">Editer</button> 

Когда я нажимаю на две кнопки ничего не отступило и перенаправление не работает.

  1. Почему?
  2. Как я могу изменить его, чтобы быть правильным?
+0

Пожалуйста редактировать свой вопрос и вставьте свой код из global.asax – Mariusz

+0

'public class MvcApplication: System.Web.HttpApplication { защищенная пустота Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register (GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters (GlobalFilters.Filters); RouteConfig.RegisterRoutes (RouteTable.Routes); BundleConfig.RegisterBundles (BundleTable.Bundles); AuthConfig.RegisterAuth(); } } ' –

+0

Что у вас есть в RegisterRoutes (маршруты RouteCollection)? – Mariusz

ответ

4

Вы не хотите создавать ссылки, как это в MVC. Попробуйте использовать ActionLink:

@Html.ActionLink("Delete", "Edit", "Super"); 

@Html.ActionLink("Edit", "Edit", "Super"); 

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.actionlink(v=vs.108).aspx

Для кнопки:

<input type="button" value="Supprimer" onclick="window.location.href='@Url.Action("Delete", "Super")';" /> 

Для того чтобы указать параметры:

<input type="button" value="Supprimer" onclick="window.location.href='@Url.Action("Delete", "Super", new { Id = 1 })';" /> 
+0

Я имею в виду нажатие кнопки, мне нужно перенаправление –

+0

@Lamloumi - отредактировал мой ответ для кнопки –

+0

, но если мне нужен параметр в действии, не работает, например, 'onclick =" window.location.href = '@ Url.Action («Удалить», «Супер», 1) «;» «URL будет« Супер/Удалить »и исключением отсутствующих аргументов появляется –

0

Проблема в том, что onclick является событием javascript и поэтому требует кода javascript. Вы просто устанавливаете его как URL-адрес, который ничего не сделает.

Один из вариантов (и я не говорю, что это в лучшем случае) будет изменить его на:

onclick="window.location = '@Url.Action("Delete", "Super", new { id = 1 })';" 
+0

URL будет без 1, т.е.' Super/Delete', поэтому появляется ошибка отсутствия аргументов –

+0

@Lamloumi: так измените бит URL, что на самом деле не было вопрос. Кстати, было бы гораздо лучше использовать тег 'a' для ссылок и использовать' Html.ActionLink (...) ' – musefan

+0

ту же ошибку, и URL-адрес остается неизменным даже после вашего кода обновления –

1

Вы можете использовать JQuery в этом случае, чтобы улучшить текущее качество кода, приведенного ниже

<input id="supprimer" type="button" value="Supprimer" /> 

$('#supprimer').click(function(){ 
    window.location.href = '@Url.Action("Delete", "Super")'; 
}); 

И в самом лучшем варианте, попробуйте модуль этот код с AMD pattern

+0

Моя проблема в действии с аргументами: в cshtml у меня есть 'Editer 'и в контроллере у меня есть' public ActionResult Edit (int id) { return RedirectToAction («Edit», «Admin», id); } '. У меня есть url 'Admin/Edit' без аргумента' id' –

0

Я нашел это решение:

<a type="button" style="width:150px; height:30px;text-decoration:none;color:white;text-align:center;background-color:darkcyan;padding:5px;border-style:outset;border-width:2px;border-color:darkcyan;margin-left:25px" href="@Url.Action("Delete", "Super",new { Id = 1 })">Supprimer</a> 
    <a type="button" style="width:150px; height:30px;text-decoration:none;color:white;text-align:center;background-color:darkcyan;padding:5px;border-style:outset;border-width:2px;border-color:darkcyan" href="@Url.Action("Edit", "Super",new { Id = 1 })">Editer</a> 

В контроллере:

public ActionResult Edit(int id) 
     { 

      int id2 = id; 


      return RedirectToAction("Edit", "Admin", new {id = id2}); 
     } 
Смежные вопросы