【问题标题】:Partial View returning as Full Page部分视图以整页形式返回
【发布时间】:2019-04-23 07:27:04
【问题描述】:

我的部分视图将我重定向到另一个页面。

索引.cshtml

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js") type="text/javascript"></script>
@using (Ajax.BeginForm("SendChat", new AjaxOptions { UpdateTargetId = "messages" }))
{
<div>
    @Html.TextBoxFor(m => m.Message.Text)
    @Html.TextBoxFor(m => m.Client.client_id, new { @Value = Model.Client.client_id, @class = "hidden" })
</div>
    <div>
        <input type="submit" value="Send message" />
    </div>
}

<div class="messages">
    @{Html.RenderPartial("~/Views/Partial/Chat.cshtml", Model.Messages);}
</div>

局部视图,Chat.cshtml

@using OPP.Web.Models
@model List<OPP.Web.Models.Message>


    @for (int i = 0; i < Model.Count; i++)
    {
        Message message = Model[i];
        if (message.OwnershipId == 1)
        {
            <p style="text-align:right">
                @message.Text
            </p>
        }

        if (message.OwnershipId == 2)
        {
            <p style="text-align:left">
                @message.Text
            </p>
        }
    }

我的控制器:

[HttpPost]
        public ActionResult SendChat(Message message, int id = 5)
        {
            WorkoutViewModel workoutViewModel = new WorkoutViewModel();
            workoutViewModel.Client = GetClient(id);
            int trainerId = workoutViewModel.Client.TrainerId ?? default(int);
            workoutViewModel.Chat = GetChat(workoutViewModel.Client.client_id, trainerId);

            message.ChatId = workoutViewModel.Chat.Id;
            if (User.IsInRole("Admin"))
                message.OwnershipId = 1;
            else if (User.IsInRole("Client"))
                message.OwnershipId = 2;
            List<Message> messages = new OPPDBContext().Messages.ToList();
            Message tmp = messages[messages.Count - 1];
            message.Order = tmp.Order + 1;
            message.Id = tmp.Id + 1;
            try
            {
                using (OPPDBContext context = new OPPDBContext())
                {
                    context.Messages.Add(message);
                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
                return PartialView("~/Views/Partial/Chat.cshtml", messages);
        }

似乎我已经准备好了所有需要的东西。有什么问题?脚本下有没有错误代码的绿色波浪线,但仅此而已。不知道该怎么办。

【问题讨论】:

  • 检查~/Scripts/jquery.unobtrusive-ajax.min.js 是否已加载。如果未加载浏览器将部分视图打开为整页
  • 如何检查是否已加载?
  • 使用您喜欢的浏览器的开发者工具。在 Chrome 上按 F12 或 Ctrl+Shift+j 并转到网络。确保所有 .js 都已加载
  • @MarceloVismari,这实际上是问题所在,我没有将这样的库放在我的主布局中,那就是它给了我整页,现在我添加了它并且它工作正常。感谢您的支持。

标签: c# jquery ajax asp.net-mvc model-view-controller


【解决方案1】:

我认为,您需要从控制器返回索引视图,如下所示:

return View("Index", workoutViewModel);

【讨论】:

    猜你喜欢
    • 2020-06-29
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2012-05-19
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    相关资源
    最近更新 更多