.Net MVC View не рендеринг - PullRequest
       8

.Net MVC View не рендеринг

1 голос
/ 18 октября 2011

У меня есть контроллер, указанный ниже:

//
// GET: /Customer/Details/5
public ActionResult Details(short id)
{
    ActionResult actionResult = null;

    if (HttpContext.User.IsInRole("Admin"))
    {
        // this is the logic that is getting executed
        YeagerTechWcfService.Customer cust = db.GetCustomerID(Convert.ToInt16(id));
        actionResult = View("Details", cust);           }
    else
    {
        HttpCookie cn = Request.Cookies["strCookieName"];
        if (cn != null)
        {
            YeagerTechWcfService.Customer cust = db.GetCustomerID(Convert.ToInt16(id));
            actionResult = View("Details", cust);
        }
        else
        {
            TempData["ErrCode"] = "CustView";
            actionResult = RedirectToAction("Index", "Home");
        }
    }

    return actionResult;
}

У меня есть представление (где находится ActionLink), как показано ниже:

columns.Template(
    @<text>
    @Ajax.ActionLink("Detail", "Details", "Customer", new { id = item.CustomerID },
    new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "detailCustomer" })
    </text>
).Width(70); 

Теперь выводимый вывод выглядит следующим образом:

<a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#detailCustomer" href="/Customer/Details/2">Detail</a> 

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

Однако, если я попытаюсь щелкнуть ActionLink , представление не появится.Я могу проверить во время отладки, что я перехожу в подробное представление после того, как я нажал на тот код контроллера.Текущее представление просто остается на месте, не переключаясь на новое представление.

Более того, я вижу, что, если я нажимаю на ActionLink, он выполняет тот же точный код (во время отладки) , как когда я вставляю его в адресную строку :

http://localhost:4514/Customer/Details/2

Когда я нажимаю на ActionLink, , даже если выполняется тот же код , , адрес URL не меняется на вышеуказанный. и представление не отображается.

Что я делаю не так?

1 Ответ

5 голосов
/ 18 октября 2011

, несмотря на то, что выполняется тот же код, адрес URL не меняется на вышеуказанный

. Вы используете Ajax.ActionLink, что означает, что он отправит запрос AJAX.Смысл AJAX в том, чтобы оставаться на той же странице и не перенаправлять.

Вы указываете UpdateTargetId = "detailCustomer", поэтому убедитесь, что на вашей странице есть контейнер с этим идентификатором:

<div id="detailCustomer"></div>

который будет обновлен с результатами вызова AJAX.Также убедитесь, что вы правильно включили скрипт jquery.unobtrusive-ajax.js на свою страницу, чтобы помощник Ajax.ActionLink мог сделать что-нибудь полезное.

С другой стороны, если вы хотите выполнить полную обратную передачу и изменитьURL вашего браузера вам, вероятно, нужна стандартная ссылка:

Html.ActionLink("Detail", "Details", "Customer", new { id = item.CustomerID }, null)
...