Как изменить содержание с помощью ajax.BeginForm? - PullRequest
1 голос
/ 13 марта 2012

Во-первых, извините за мой плохой английский.

Я хотел бы, чтобы, когда один человек нажимал на кнопку "Page1", контроллер возвращал частную визуализацию для "Page1" и те же самые вещи для "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 всегда равен false, а частичное представление не обновляет divно сотрите всю страницу

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

1 Ответ

1 голос
/ 13 марта 2012

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

<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>

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


ОБНОВЛЕНИЕ:

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

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...