2013-11-22 6 views
0

пытается узнать mvc, создав простую социальную сеть и im, пытаясь заставить ajax работать, но вместо обновления целевого div частичный вид возвращается как целая новая страница. Может кто-нибудь объяснить, почему, пожалуйста?Простой MVC Ajax Устранение неполадок

(нет никакой разницы между постом и статусом в коде ниже, разница называния от потому что я пытался скопировать учебник на YouTube точно)

INDEX

@Html.Partial("_AddPost", new S1.Models.Post()) 

<div id="newStatus"> 
</div> 

ADD POST ЧАСТИЧНЫХ

@using (Html.BeginForm("CreatePost", "Wall", new AjaxOptions 
{ 
    HttpMethod = "post", 
    InsertionMode = System.Web.Mvc.Ajax.InsertionMode.InsertAfter, 
    UpdateTargetId = "newStatus"})) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    <fieldset> 
     <legend>Post</legend> 

     <div class="editor-label"> 

     </div> 
     <div class="editor-field"> 
      @Html.HiddenFor(model => model.Username, new { Value = User.Identity.Name }) 

     </div> 


     <div class="editor-label"> 
      @Html.LabelFor(model => model.PostContent) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.PostContent) 
      @Html.ValidationMessageFor(model => model.PostContent) 
     </div> 

     @{ 
    TempData["returnURL"] = Request.Url.AbsoluteUri; 
     } 
     <p> 
      <input type="submit" id="postStatus" value="Create" /> 
     </p> 
    </fieldset> 
} 

СОЗДАТЬ POST ACTION

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public PartialViewResult CreatePost(Post Post) 
     { 

      if (ModelState.IsValid) 
      { 
       string wallID = TempData["wallID"].ToString(); 

       Post.PostDateTime = System.DateTime.Now; 
       Post.Wallname = wallID; 

       db.Posts.Add(Post); 
       db.SaveChanges(); 
       return PartialView("_NewStatusPartial",Post); 


      } 

      return PartialView("All",Post); 
     } 

Заранее спасибо

ответ

1

Вы не можете использовать этот Html Helper -

@using (Html.BeginForm("CreatePost", "Wall", new AjaxOptions 
{ 
    HttpMethod = "post", 
    InsertionMode = System.Web.Mvc.Ajax.InsertionMode.InsertAfter, 
    UpdateTargetId = "newStatus"})) 
{ 

С AjaxOptions перегружать, что вы проходите. Вы должны переключиться на использование Ajax.BeginForm()

@using (Ajax.BeginForm("CreatePost", "Wall", new AjaxOptions 
{ 
    HttpMethod = "post", 
    InsertionMode = System.Web.Mvc.Ajax.InsertionMode.InsertAfter, 
    UpdateTargetId = "newStatus"})) 
{ 

Кроме того, убедитесь, что вы в то числе надлежащего Microsoft.Ajax файлы JavaScript в вашем проекте и ваш HTML разметка (вероятно, в файле макет).

Идти вперед, используя jQuery для обработки представлений форм и частичных обновлений страниц, вы получите больше гибкости в том, как вы кодируете и разрабатываете свой сайт, но так как вы следите за учебником, я не хочу отклоняться от вашего вопроса бросая эти концепции на вас.

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