2016-12-07 5 views
0

У меня есть эта проблема, у вас есть много искать, но с правильным ответом.Загрузить частичный вид после нажатия кнопки

У меня есть контактная форма в нижнем колонтитуле на моей странице _Layout, но когда я нажал кнопку, частичный вид открывается на новой странице.

Я не забываю включать jquery.unobtrusive-ajax.js. Вот что у меня есть.

Контроллер:

[HttpGet] 
    public ActionResult Call() 
    { 
     return PartialView("_PartialFooter"); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Call(CallMe callMe) 
    { 
     if(ModelState.IsValid) 
     { 

     } 
     return PartialView("_PartialFooter"); 
    } 

_layout скриптами выше тега Body в нижней

@using (Ajax.BeginForm("Call", "Home", new AjaxOptions { UpdateTargetId = "result" })) 
          { 
           <div id="result" class="margin-bottom-5"> 
            @Html.Action("Call", "Home") 
           </div> 
           <button class="btn btn-common-small margin-bottom-10 pull-right" type="submit">Send</button> 
          } 

@Scripts.Render("~/bundles/jquery") 
    @Scripts.Render("~/bundles/bootstrap") 
    @Scripts.Render("~/bundles/myscripts") 
    @RenderSection("scripts", required: false) 
@section Scripts { 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

} 

_PartialFooter (частичный вид)

@model servicemadsen.Models.CallMe 


@Html.AntiForgeryToken() 
    <div class="row"> 
     <div id="result" class="margin-bottom-5"> 


      <div class="col-md-6"> 
       @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", @placeholder = "Navn" } }) 
      </div> 
      <div class="col-md-6"> 
       @Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control", @placeholder = "Telefon" } }) 
      </div> 
      <div class="col-md-12"> 
       @Html.TextAreaFor(model => model.CallMeMessage, new { @class = "form-control", @placeholder = "Besked", @cols = 80, @rows = 7 }) 
      </div> 
      <div class="col-md-12"> 
       @Html.ValidationMessageFor(model => model.Name, string.Empty, new { @class = "field-validation-error" }) 
       @Html.ValidationMessageFor(model => model.Phone, string.Empty, new { @class = "field-validation-error" }) 
       @Html.ValidationMessageFor(model => model.CallMeMessage, string.Empty, new { @class = "field-validation-error" }) 
      </div> 

     </div> 
     </div> 

Надежда кто-то может помочь, его probaly какой-то фиктивный предмет, который мне нужен

+0

Если вы перенаправляете, это означает, что 'jquery.unobtrusive-ajax.js' загружен неправильно. Наличие '@section Scripts {' в макете не имеет смысла (и эта часть содержит 2-ю копию jquery). Переместите файл 'jquery.unobtrusive-ajax.js' после' @ Scripts.Render ("~/bundles/myscripts") '(или лучше использовать пакет' jqueryval' и удалить '@section Scripts {' –

ответ

2

Вы установили mask jQuery unobstrusive ajax? если не попробовать с этим. Я делаю некоторые тесты с вашим кодом и работает.

EDIT: я также изменить код для испытаний

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Call(CallMe callMe) 
    { 
     if (ModelState.IsValid) 
     { 
      ModelState.Clear(); 
      callMe.CallMeMessage = callMe.CallMeMessage + " i was on the server"; 
     } 
     return PartialView("_PartialFooter", callMe); 
    } 

и

  @using (Ajax.BeginForm("Call", "Home", new AjaxOptions { UpdateTargetId = "result", InsertionMode = InsertionMode.Replace})) 
     { 
      <div id="result" class="margin-bottom-5"> 
       @Html.Action("Call", "Home") 


      </div> 
      <button class="btn btn-common-small margin-bottom-10 pull-right" type="submit">Send</button> 
      } 

так что вы можете увидеть изменения.

+0

Да в nuget я установил Microsofr.jQuery.Unobtrusive.Ajax от microsoft – tinaw25

+0

@ tinaw25 и вы добавили скрипт в макет? –

+0

@ tinaw25 это мои тесты, я надеюсь, что это вам поможет. https://github.com/Manuel- Iriarte/stackoverflow-20161207 –