【问题标题】:Partial View Result部分查看结果
【发布时间】:2018-08-22 00:00:56
【问题描述】:

我可以在PartialViewResult() 中返回如下视图吗?:

public PartialViewResult EditAdminProfile_Post(int Id, FormCollection formCollection)
        {
            //if (Session["AdminID"] != null)
            //{
            Admin admin = new Admin();
            admin = db.Admins.Single(m => m.ID == Id);
            admin.Name = formCollection[0];
            admin.Gender = formCollection[1];
            admin.Email = formCollection[2];
            admin.ContactNumber = formCollection[3];
            admin.AboutMe = formCollection[4];
            if (ModelState.IsValid)
            {
                db.Entry(admin).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
            }
            return PartialView("AdminProfile");

AdminProfile 不是局部视图。

【问题讨论】:

  • 你为什么不试试呢? :)
  • 我正在尝试但编译时错误@VsevolodGoloviznin
  • 那么你可能会发布你得到的错误?
  • 我想这在物理上是可能的,但你会得到某种初始(双重布局);)
  • 对象引用未设置为对象的实例。 @VsevolodGoloviznin

标签: asp.net-mvc partial-views asp.net-mvc-partialview


【解决方案1】:

是的,你可以。但不建议这样做,因为您的 _layout 被忽略(这意味着布局中定义了 cssscript 文件,因此您的样式和功能可能会与您预期的不同)。即使你可以让它工作,你也会看到代码气味

您是否希望重复使用 AdminProfile 作为两者 部分视图和正常视图?

  • 创建具有可重复使用内容的局部视图AdminProfilePartial
  • 在您的 AdminProfile 视图中,在其中调用 AdminProfilePartial(即使您只使用这些)

然后当你返回完整视图时:

return View("AdminProfile");

否则部分视图:

return PartialView("AdminProfilePartial");

【讨论】:

  • 我有一个部分视图,但是当我重用它时,它显示另一个选项卡和 url 也发生了变化
  • 我不明白您所说的“它显示另一个选项卡并且网址也已更改”是什么意思。将您的观点添加到问题中以使其更加清晰可能会很好。
  • 我有一个部分管理视图,当我在返回视图中传递它时,当它重定向这个链接是 /admin/_adminprofile 而不是 /admin/AdminProfile
【解决方案2】:

问题是你没有将模型传递给你的局部视图,这就是为什么当你调用它时你会得到一个Null reference

用这一行更新你的代码:

return PartialView("AdminProfile", admin);

PS 而不是使用FormCollection,最好使用默认模型绑定器并在您的操作方法中接受Admin 模型

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多