如何渲染PartialView

问题描述 投票:0回答:1

以Html

@section Scripts
{
<script type="text/javascript">

    $(document).ready(function() {

        $('#bSubmit').click(function(event) {
            event.preventDefault();

            var formData = new FormData();
            formData.append('@Html.Get__RequestVerificationTokenString()', '@Html.GetAntiForgeryToken()');
            formData.append('request.MessageId', @Model.MessageId);
            formData.append('request.Message', $('#Message').val());

            var xmlHttpRequest = new XMLHttpRequest();
            if (!window.XMLHttpRequest) {
                xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }

            xmlHttpRequest.open("POST",
                '@Url.Action("Send", "Page", new {area = "Question"})',
                true);

            xmlHttpRequest.onloadend = function() {
                var response = JSON.parse(xmlHttpRequest.responseText);

                $('#prButton').removeClass("visible");
                $('#prButton').addClass("invisible");

                switch (response.Type) {
                case 10:
                    LOG(response.PartialView);

                    $('#layoutSingleMessageItems .card-box').replaceWith(response.PartialView);
                    break;
                case -13:
                    @Html.ShowAlert("خطا در ارسال اطلاعات!");
                    break;
                }
            };

            xmlHttpRequest.send(formData);

        });

    });

</script>
}
<div class="row">

    <div class="col-md-7">
        @Html.Partial("Par_SingleMessageItem", Model.SingleMessageItems)
    </div>

<div class="col-md-5">
    <div class="card-box">
        <form>
            @Html.AntiForgeryToken()
            <div class="form-group col-md-12">
                <label class="col-form-label">پاسخ</label>
                <textarea rows="8" id="Message" placeholder="لطفا پاسخ خود را وارد کنید ..."></textarea>

            </div>

            <div class="form-group col-md-12 m-t-10">

                <button id="bSubmit" type="submit">
                    ارسال پاسخ

                </button>
            </div>

        </form>

    </div>
</div>

在PartialView(Par_SingleMessageItem)

@model List<_4Wheels.Areas.Question.Models.SingleMessage.SingleMessageItem>

<div id="layoutSingleMessageItems" class="card-box">
    <div class="card-box">
        @{
            foreach (var item in Model)
            { 
                //code
            }
         }
   </div>
</div>

在控制器中

[HttpPost]
public ActionResult Send() {
   /*
      items = list object
   */

   return Json(new SendAnswerResponse {
       Type = 10,
       SingleMessageItems = PartialView("Par_SingleMessageItem" , items)
   });
}

SendAnswerResponse

public class SendAnswerResponse : MvcResponse
{
    public PartialViewResult SingleMessageItems { get; set; }
}

所有这些代码都可以正常工作,但是$('#layoutSingleMessageItems .card-box'). replaceWith(response.PartialView);它不起作用,没有任何错误。返回所需的PartialView,只是tag未被更新。

我什至将其放在Console.log(response.PartialView)中以显示此消息

型号:(5)[…]0:对象{消息:“ fdgdfgdfg”,用户名:“محمدحسنسلمانیان”,MessageDate:“ 1398-08-06 23:01:11”,…}1:对象{消息:“ dsafd”,用户名:“”,MessageDate:“ 1398-08-07 08:34:19”,…}2:对象{消息:“ vcgdsafd”,用户名:“”,MessageDate:“ 1398-08-07 08:34:58”,…}3:对象{消息:“ fdgfdg”,用户名:“”,MessageDate:“ 1398-08-07 08:42:43”,…}4:对象{消息:“ fdgfdg”,用户名:“محمدحسنسلمانیان”,MessageDate:“ 1398-08-07 08:42:54”,…}长度:5:数组[]TempData:数组[]查看:nullViewBag:对象{}ViewData:[]长度:0:数组[]ViewEngineCollection:数组[{…}]ViewName:“ Par_SingleMessageItem”:{…}defineGetter:函数defineGetter()defineSetter:函数defineSetter()lookupGetter:函数lookupGetter()lookupSetter:函数lookupSetter()proto:构造函数:Function Object()hasOwnProperty:函数hasOwnProperty()isPrototypeOf:函数isPrototypeOf()propertyIsEnumerable:函数propertyIsEnumerable()toLocaleString:函数toLocaleString()toSource:函数toSource()toString:函数toString()valueOf:函数valueOf():函数proto():函数proto()Utility.js:13:13

javascript asp.net-mvc controller xmlhttprequest partial-views
1个回答
0
投票

response.SingleMessageItems返回什么?它返回html吗?还是数据结构?我想您尝试这样的事情

© www.soinside.com 2019 - 2024. All rights reserved.