2017-02-23 501 views
0

Существует уже много похожих ответов, но я не нашел решения для меня. Вот почему здесь моя ситуация.C# MVC, частично отображается как новая страница не внутри div

Когда я возвращаю частичное, он возвращается как новая страница, а не внутри div.

Тет, как выглядит мое действие контроллера.

public ActionResult AddNewDutyTime(string id) 
    { 
     try 
     { 
      return PartialView("_DutyTimeView", TimesheetHoursPageHelper.AddNewDutyTime(id)); 
     } 
     catch (Exception) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.InternalServerError); 
     } 
    } 

Ниже приводится ссылка действие

@Ajax.ActionLink(
"Add Duty", 
"AddNewDutyTime", 
"Timesheets", 
new {Model[i].Id}, 
new AjaxOptions 
{ 
    HttpMethod = "POST", 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = dutyTimeId, 
    OnSuccess = "$('#btnAddDuty" + Model[i].Id + "').prop('disabled', false)" 
}, 
new 
{ 
    id = "btnAddDuty" + Model[i].Id, 
    area = "Client", 
    @class = "btn btn-primary", 
    onclick = "$('#btnAddDuty" + Model[i].Id + "').prop('disabled', true)" 
}) 

здесь ДИВ обновить

<div id="@dutyTimeId" class="col-lg-12 top10"> 
    @{ Html.RenderPartial("_DutyTimeView", Model[i].DutyTimes); } 
</div> 

ошибок в консоли, и ЮНОБ trosive.js присутствует. chrome dev tools

Перед нажатием на ссылку действий link

и после клика link

Спасибо.

+0

Вы уверены, что '_DutyTimeView' является частичной страницей и не содержит страницы макета? – Lali

+0

@Lali, я уверен, это частичный, и не макет, только модель. – ovasylenko

+1

Если его перенаправление, 'jquery.unobtrusive-ajax.js' загружен неправильно или у вас есть другой код, мешающий. Предложите загрузить неминифицированную версию и поставить на нее точку останова, чтобы проверить ее попадание. В любом случае, проще всего использовать методы '. $ .Ajax()' в любом случае (и методы '@ Ajax.ActionLink()' и '@ Ajax.BeginForm()' больше не поддерживаются в core-mvc) –

ответ

0

У меня была такая же проблема, что у меня только что была установлена ​​jQuery.Unobtrusive.Ajax от nuget от this link это добавит jquery.unobtrusive-ajax.min.js в папку сценария, я просто ссылаюсь на нее, и это все работает нормально.

My MVC версия 5.0.0.0 для другой версии, пожалуйста, найти this ссылку, чтобы загрузить jquery.unobtrusive-ajax.min.js

Кроме того, убедитесь, что ненавязчивый JavaScript включен в вашем web.config (это должно быть по умолчанию).

<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
+0

Только что проверил, включите эту опцию в config. Я не знаю, что повлияло на мой код, что у меня такая проблема ... потому что вчера это сработало отлично. – ovasylenko

+0

Ох, чем проверить 'jquery.unobtrusive-ajax.min.js', все еще есть в источнике браузера, потому что похоже, что это проблема только из-за js и проверка вашей консоли, если есть какая-либо ошибка? – Curiousdev

+0

Нет, ошибки и ненавязчивые файлы не загружены. – ovasylenko