2015-07-22 2 views
1

Я знаю, что этот вопрос задан очень часто, и я попытался найти любое решение, которое я могу найти, но я до сих пор не могу получить форму Ajax для обновления DIV, а затем перенаправление на Action Action, например (Local ..Home/Index_AddUser). Я сократил код, как это очень долго иначе:Переадресация формы AJAX вместо обновления целевого

Посмотреть

@using (Ajax.BeginForm("Index_AddUser", new AjaxOptions{UpdateTargetId = "userList"})) 
    { 
     @Html.AntiForgeryToken() 
     //This summarises user input and displays error messages 
     @Html.ValidationSummary() 

     <div id="aParent"> 

      <div align="justify"> 
       <div>@Html.LabelFor(model => model.UserLogin)</div> 
       <div>@Html.EditorFor(model => model.UserLogin, new { id = "UserLogin" })</div> 
      </div> 
      //Same as above repeated with different values 
      <div> 
       <div><input type="submit" value="Add User" id="UserCreate" /></div> 
      </div> 
     </div> 
    } 

<div id="userList"> 
    @{Html.RenderAction("UserListControl");} 
</div> 

Частичный вид

@model IEnumerable<WebApplication1.Models.UserDetail> 
      <table> 
      <!-- Render the table headers. --> 
      <thead> 
       <tr> 
        //Table Headers matching LabelFor in VIew 
       </tr> 
      </thead> 
       <tbody> 
        @foreach (var item in Model) 
        { 
         <tr> 
          //Table Rows from db 
         </tr> 
        } 
       </tbody> 
     </table> 

UserDetailsController

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Index_AddUser([Bind(Prefix = "NewUserDetails")]UserDetail model) 
    { 
     Manager manager = new Manager(); 
      if (model != null) 
      { 
       manager.SaveUser(model.UserID, model.UserLogin, model.FirstName, model.Surname, model.Email, model.Active); 
       return PartialView("UserListControl"); 
      } 
      return PartialView("UserListControl"); 
     } 

_layout

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryval") 
@Scripts.Render("~/bundles/jqueryui") 
@Scripts.Render("~/bundles/bootstrap") 
@RenderSection("scripts", required: false) 

Web.config

<appSettings> 
    <add key="webpages:Version" value="3.0.0.0"/> 
    <add key="webpages:Enabled" value="false"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 

BundleConfig

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
         "~/Scripts/jquery-{version}.js")); 

      bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
         "~/Scripts/jquery-ui-{version}.js")); 

      bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
         "~/Scripts/jquery.unobtrusive*", 
         "~/Scripts/jquery.validate*")); 

Спасибо заранее и я новичок в стек и MVC, так что если вам нужна больше информации спрашивайте :)

+0

Обычно он перенаправляется, если вы не использовали правильную перегрузку '@Ajax.BeginForm', или вы не добавили все сценарии. Попробуйте использовать одну форму с именем контроллера, также проверьте сетевую вкладку инструмента разработчика, если вы добавили все необходимые сценарии и свою загрузку, добавьте httpmethod и insertionmode в параметры ajax. –

+0

@ChaitanyaGadkari Я сделал это: '@using (Ajax.BeginForm («Index_AddUser», новый AjaxOptions {HttpMethod = "POST", UpdateTargetId = "userList", InsertionMode = InsertionMode.Replace})) ' – hjardine

+0

@ChaitanyaGadkari Он по-прежнему перенаправляется на новую страницу – hjardine

ответ

1

Почему бы не попробовать Javascript с jquery, чтобы обновить div async? вместо использования элементов управления mvc?

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

Это означает, что ваш взгляд Users

<input type="button" id="addUser" onclick="newUser()" value="Add User"/> 
<div id="NewUserDiv"></div> 
@model IEnumerable<WebApplication1.Models.UserDetail> 
     <table> 
     <!-- Render the table headers. --> 
     <thead> 
      <tr> 
       //Table Headers matching LabelFor in VIew 
      </tr> 
     </thead> 
      <tbody> 
       @foreach (var item in Model) 
       { 
        <tr> 
         //Table Rows from db 
        </tr> 
       } 
      </tbody> 
    </table> 

Вашего JavaScript для этой страницы

 function newUser() { 
     $.ajax({ 
      url: '/Home/CreateUser', 
      success: function (data) { 
       $('#NewUserDiv').html(data); 
      } 
     }); 
    } 

Вашего частичного Добавить пользователь Посмотреть CreateUser

@using (Html.BeginForm("CreateUser", "Home", FormMethod.Post, new { encType = "multipart/form-data", name = "NewEmployeeForm", @class = "form-group" })) 
     { 
      @Html.AntiForgeryToken() 
    //This summarises user input and displays error messages 
    @Html.ValidationSummary() 

    <div id="aParent"> 

     <div align="justify"> 
      <div>@Html.LabelFor(model => model.UserLogin)</div> 
      <div>@Html.EditorFor(model => model.UserLogin, new { id = "UserLogin" })</div> 
     </div> 
     //Same as above repeated with different values 
     <div> 
      <div><input type="submit" value="Add User" id="UserCreate" /></div> 
     </div> 
    </div> 
     } 

метод контроллер в Home для добавления пользователя неполный просмотр

[HttpGet] 
    public ActionResult CreateUser() 
    { 
     var user = new UserDetail(); 
     return PartialView("CreateUser", user); 
    } 

    [HttpPost] 
    public ActionResult CreateUser(UserDetail model) 
    { 
    Manager manager = new Manager(); 
     if (model != null) 
     { 
      manager.SaveUser(model.UserID, model.UserLogin, model.FirstName, model.Surname, model.Email, model.Active); 
     } 
     return RedirectToAction("Home", "Users"); 
    } 
+0

На данный момент я готов попробовать что угодно :) – hjardine

+0

Если бы вы могли предоставить образец было бы очень благодарно – hjardine

+0

это не ответ.Я знаю, что вы не можете комментировать из-за репутации, но вы можете добавить код, если знаете, как это сделать, чтобы помочь OP –

 Смежные вопросы

  • Нет связанных вопросов^_^