无法在MVC4中使用jquery ajax更新局部视图
我正在尝试更新局部视图,但无法更新。我正在分享我迄今为止所做的代码 行动:无法在MVC4中使用jquery ajax更新局部视图,jquery,ajax,asp.net-mvc,asp.net-mvc-4,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 4,我正在尝试更新局部视图,但无法更新。我正在分享我迄今为止所做的代码 行动: public ActionResult AddReview([Bind(Include = "ReviewId,ProductId,ReviewerName,ReviewText,Rating,Time,Summary")] Review review, int? id) { var reviewsList = new List<Review&g
public ActionResult AddReview([Bind(Include = "ReviewId,ProductId,ReviewerName,ReviewText,Rating,Time,Summary")]
Review review, int? id)
{
var reviewsList = new List<Review>();
reviewsList.Add(review);
if (ModelState.IsValid)
{
review.Time = DateTime.Now;
review.ProductId = id.Value;
db.Reviews.Add(review);
db.SaveChanges();
if (Request.IsAjaxRequest())
{
// return HttpNotFound();
return PartialView("_Reviews", reviewsList);
}
}
return HttpNotFound();
}
这是部分视图_回顾:
@model IEnumerable<ConsumerSimpleNew.Models.Entities.Review>
<div id="reviews">
@foreach (var item in Model)
{
<h5>
<span class="color"> @Html.DisplayFor(modelitem => item.ReviewerName)</span> - @item.Time.ToString("MMM dd-yyyy")
</h5>
<h6>Summary - @Html.DisplayFor(modelitem => item.Summary)</h6>
<h6>Rating: @Html.DisplayFor(modelitem => item.Rating)</h6>
<div class="std">@Html.DisplayFor(modelitem => item.ReviewText)</div>
<hr />
}
</div>
@model IEnumerable
@foreach(模型中的var项目)
{
@Html.DisplayFor(modelitem=>item.ReviewerName)-@item.Time.ToString(“MMM-dd-yyyy”)
Summary-@Html.DisplayFor(modeleItem=>item.Summary)
评级:@Html.DisplayFor(modelitem=>item.Rating)
@DisplayFor(modelitem=>item.ReviewText)
}
这是详细信息视图:
@Html.Partial("_Reviews", Model.Reviews)
<div class="form-add">
<h2>Write Your Own Review</h2>
<form method="post" action="@Url.Action("Details")"
data-consumer-ajax="true" data-consumer-target="#reviews">
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<h4>You're reviewing: <span class="color">@Model.Product.Name</span></h4>
<span id="input-message-box"></span>
<input type="hidden" name="validate_rating"
class="validate-rating" value=""><ul class="form-list">
<li>
<label for="nickname_field" class="required"><em>*</em>Name</label>
<div class="input-box">
@Html.TextBoxFor(modelitem => Model.Review.ReviewerName, new
{
@class = "input-text required-entry",
placeholder = "Write your name"
})
@Html.ValidationMessageFor(model => model.Review.ReviewerName)
</div>
</li>
<li>
<label for="summary_field" class="required"><em>*</em>Summary of Your Review</label>
<div class="input-box">
@Html.TextBoxFor(modelitem => Model.Review.Summary, new
{
@class = "input-text required-entry",
placeholder = "Write Summary"
})
@Html.ValidationMessageFor(model => model.Review.Summary)
</div>
</li>
<li>
<label for="summary_field" class="required"><em>*</em>Rating (out of 10)</label>
<div class="input-box">
@Html.TextBoxFor(modelitem => Model.Review.Rating, new
{
@class = "input-text required-entry",
placeholder = "Give Some Rating"
})
@Html.ValidationMessageFor(model => model.Review.Rating)
</div>
</li>
<li>
<label for="review_field" class="required"><em>*</em>Review</label>
<div class="input-box">
@Html.TextAreaFor(modelitem => Model.Review.ReviewText, new
{
cols = "15",
rows = "13",
@class = "required-entry",
placeholder = "Write your review..."
})
@Html.ValidationMessageFor(model => model.Review.ReviewText)
</div>
</li>
</ul>
</fieldset>
<div class="buttons-set">
<input type="submit" title="Submit Review" class="button pull-right" value="Submit Review" />
</div>
</form>
@Html.Partial(“\u Reviews”,Model.Reviews)
写你自己的评论
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
您正在审阅:@Model.Product.Name
-
*名字
@Html.TextBoxFor(modelitem=>Model.Review.ReviewerName,新建
{
@class=“输入文本必填项”,
占位符=“写下你的名字”
})
@Html.ValidationMessageFor(model=>model.Review.ReviewerName)
-
*你的评论摘要
@Html.TextBoxFor(modelitem=>Model.Review.Summary,新建
{
@class=“输入文本必填项”,
占位符=“编写摘要”
})
@Html.ValidationMessageFor(model=>model.Review.Summary)
-
*评级(满分10分)
@Html.TextBoxFor(modelitem=>Model.Review.Rating,新建)
{
@class=“输入文本必填项”,
占位符=“给一些评分”
})
@Html.ValidationMessageFor(model=>model.Review.Rating)
-
*复习
@Html.TextAreaFor(modeleItem=>Model.Review.ReviewText,新建
{
cols=“15”,
rows=“13”,
@class=“必填项”,
占位符=“写下你的评论…”
})
@Html.ValidationMessageFor(model=>model.Review.ReviewText)
我已经使用和寻找了很多可能的解决方案,但我无法得到最好的解决方案。请帮我解决这个错误。我以前从未见过这样构建的ajax。尝试将您的ajax调用更改为
$('.btnSubmit').on('click', function(){
$.ajax({
url: '@Url.Action("Action", "Controller")',
type: 'post',
cache: false,
async: true,
data: { id: "frmUser" },
success: function(result){
$('.divPartial').html(result);
}
});
});
这将把返回的部分视图放入divPartial类的div中。看起来您正在向部分视图传递“审阅”,但您的部分视图需要
IEnumerable<ConsumerSimpleNew.Models.Entities.Review>
IEnumerable
在jquery调用中添加一个error:section,看看它是否被命中
if (ModelState.IsValid)
{
review.Time = DateTime.Now;
review.ProductId = id.Value;
db.Reviews.Add(review);
db.SaveChanges();
}
if (Request.IsAjaxRequest())
{
// return HttpNotFound();
var reviewsList = new List<Review>();
reviewsList.Add(review);
return PartialView("_Reviews", reviewsList);
}
if(ModelState.IsValid)
{
review.Time=DateTime.Now;
review.ProductId=id.Value;
db.Reviews.Add(review);
db.SaveChanges();
}
if(Request.IsAjaxRequest())
{
//返回HttpNotFound();
var reviewsList=新列表();
添加(审阅);
返回部分视图(“U评论”,评论列表);
}
您的代码不起作用,实际上我想更新部分视图,其他一切正常,但在表单发布后,部分视图在提交时没有更新,但调用控制器成功。这将更新部分视图。单击类为btnSubmit的按钮将触发此操作。什么不管用?@马特,那不管用。请检查我的问题,在我试图改变“审查”,但得到了模型项错误,部分视图是
if (ModelState.IsValid)
{
review.Time = DateTime.Now;
review.ProductId = id.Value;
db.Reviews.Add(review);
db.SaveChanges();
}
if (Request.IsAjaxRequest())
{
// return HttpNotFound();
var reviewsList = new List<Review>();
reviewsList.Add(review);
return PartialView("_Reviews", reviewsList);
}