2012-03-13 4 views
1

Во-первых, извините за мой плохой английский.Как изменить содержимое с помощью ajax.BeginForm?

Мне хотелось бы, чтобы один человек нажал кнопку «Страница1», контроллер вернул рендеринга «Страница1» и те же вещи для «page2» и «allPage».

Мои взгляды является:

@{ 
ViewBag.Title = "Title"; 
} 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
<h2>Title</h2> 

@using (Ajax.BeginForm("NameAction", //controller action name 
"NameController", //controller name 
new AjaxOptions //ajax options that tell mvc how to perform the replacement 
{ 
UpdateTargetId = "ViewPage", //id of div to update 
HttpMethod = "Post" //how to call the controller action 
}, new { id = "FormName" })) 
{ 
<input type="submit" id="btn" value="p1" id="p1"/> 
<input type="submit" id="btn" value="p2" id="p2"/> 
<input type="submit" id="btn" value="AllPage" id="AllPage"/> 
<div id="ViewPage"> 
    //render partial view 
</div>   
} 

И мой контроллер:

public class NameController : Controller 
{ 
    [HttpPost] 
    public ActionResult NameAction(String btn) 
    { 
     if (Request.IsAjaxRequest()) 
     if(btn="p1") 
     return PartialView("p1"); 
     if(btn="2") 
     return PartialView("p2"); 
     if(btn="3") 
     return PartialView("p3"); 


     return View(); 
    } 
} 

Request.isAjaxRequest равно всегда ложно и PartialView не обновлять DIV, но стереть всю страницу

Спасибо за твоя помощь.

+0

MVC2 или MVC3? Пожалуйста, очистите теги вашего вопроса. – ThiefMaster

+0

@ThiefMaster, я удалил тег 'asp.net-mvc-2', который нельзя использовать с' razor'. –

+0

Извините за тег и спасибо за вашу коррекцию Дарин Димитров. thats работает средним, потому что решение с моей «строкой btn» не является нулевым, но параметры ajax не работают :(Если я тестирую в своем контроллере isAjaxRequest равно всегда false, а partialview удаляет всю мою страницу и не обновляет div: s – Zoners

ответ

1

Дайте ваши кнопки отправки имя:

<input type="submit" name="btn" value="page1" id="Page1"/> 
<input type="submit" name="btn" value="Page2" id="Page2"/> 
<input type="submit" name="btn" value="AllPage" id="AllPage"/> 

, а затем:

[HttpPost] 
public ActionResult NameAction(string btn) 
{ 
    if (btn == "page1") 
    { 
     // the page1 button was clicked 
    } 
    else if (btn == "page2") 
    { 
     // the page2 button was clicked 
    } 
    else if (btn == "AllPage") 
    { 
     // the AllPage button was clicked 
    } 

    ... 
} 

, и если вы не хотите зависеть от фактического ярлыке кнопки:

<button type="submit" name="btn" value="p1" id="Page1">Show page 1</button> 
<button type="submit" name="btn" value="p2" id="Page2">Show page 2</button> 
<button type="submit" name="btn" value="all" id="AllPage">Show all pages</button> 

и в контроллере вы можете проверить значение.


UPDATE:

Убедитесь, что вы включили jquery.unobtrusive-ajax скрипт на вашей странице, так что Ajax.BeginForm работает и посылает запрос AJAX:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
Смежные вопросы