Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在MVC4中使用jquery ajax更新局部视图_Jquery_Ajax_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

无法在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);
        }