【发布时间】:2014-02-16 00:52:59
【问题描述】:
我的视图中有这段 HTML 代码
@using (Ajax.BeginForm("AddJoke", "Home", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "MyfriendsJokes" , InsertionMode= InsertionMode.InsertAfter}))
{
<div style="display:block">
<textarea placeholder="Post New Joke" id="newJoke" name="joke" rows="3" cols="50" style="float:left;position"></textarea>
<button type="submit" id="postnewjoke" style="float:left"> Post </button>
@Html.TextBoxFor(model => model.fileContent, new { type = "file", id = "fileuploaded", name = "fileuploaded" })
<div style="display:inline-block">
<input type="checkbox" name="geo" id="geo" style="width: 100%; float: left; display: block">
<input name="longitude" style="display:none"/>
<input name="latitude" style="display:none" />
<input name="user" style="display:none" value="@Model.user.Id"/>
<span>Include Location</span>
</div>
<span id="jokeError" style="color:red;font-size:14px;"></span>
</div>
}
<article id="MyfriendsJokes">
@Html.Partial("_NewJoke")
</article>
这个代码在我的控制器中
[HttpPost]
public PartialViewResult AddJoke(string joke, string user, HomePage page,HttpPostedFileBase fileuploaded, string longitude, string latitude)
{
Joke newJ = new Joke();
newJ.Key = Guid.NewGuid();
newJ.body = joke;
newJ.facebookID = user;
newJ.rank = 0;
newJ.time = DateTime.Now;
newJ.longitude = longitude;
newJ.latitude = latitude;
db.Jokes.Add(newJ);
HomePage page1 = new HomePage();
page1.user = Session["user"] as MyAppUser;
//db.SaveChanges();
return PartialView("_NewJoke", page1);
}
但不是将元素添加到目标 div,而是使用新的整个页面重新加载页面,其中仅包含部分视图的元素,即 this
@using Jokes.Models
@using Microsoft.AspNet.Mvc.Facebook.Models
@model HomePage
<div style="display:block">
@Model.user.Name
</div>
有人可以帮忙说一下这里有什么问题将元素附加到 div 而不是加载新的整个页面吗?
【问题讨论】:
-
当我过去看到这个时,我错过了对 jquery.unobtrusive-ajax.js 的引用
标签: asp.net asp.net-mvc-4 razor asp.net-ajax partial-views