空视图包和部分视图

时间:2017-02-01 16:50:22

标签: asp.net-mvc-4 partial-views viewbag

我正在尝试使用部分视图,但我完全迷失了。最初我试图将动态数据传递到局部视图但是当你按下谷歌浏览器F12键时我最终得到了403禁止。

部分视图我已经减少到一个允许它加载数据的字段

      <table cellpadding="1" border="1">
          <tr>
            <th>
                FIELD LBL1  
            </th>          
          </tr>

        @foreach (MvcProgram.Models.LIST_FULL item in @ViewBag.ListFull)
        {
            <tr>
                <td>
                    @item.FIELD1_DATA
               </td>
            </tr>
    }

    </table>

错误告诉我mvc无法使用视图包推送动态数据,因为它禁止。所以我正在废弃这个想法,因为我尝试了各种失败的解决方法。现在我只想在视图包中用静态数据填充局部视图,但我想因为当页面在创建视图上立即失败时没有值列表。出现此错误:

  

对象引用未设置为对象的实例。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

它在我的部分视图的foreach循环中停止

       @foreach (ComputerProgram.Models.LIST_FULL item in @ViewBag.ListFull)

MVC在创建视图时可以使用部分视图吗?我的列表是使用下拉列表中的ID构建的,但当然在创建视图之前没有选择,直到用户交互了表单。

所以我的问题是MVC甚至可以在创建视图中渲染部分视图,或者这是由于某些mvc限制你只能在webforms中执行的操作。

创建视图

        <div class="col-sm-6">

                <div class="form-horizontal" style="display:none"   id="PV_IssueList">

                 @Html.Partial("_VehIssuesListPartial")

               </div>
            </div>

我似乎能够获得此MVC创建视图以显示部分视图的唯一方法是为视图包构建列表,并使用要呈现的已知记录填充它。这可能是正确的:部分视图是否仅在屏幕上可用,屏幕上有数据?

控制器代码既可以说是获取代码也可以代码:

    // GET: VRS_REQUEST/Create**********************************
    public ActionResult Create()
    {
          some code stuff

        ViewBag.VehIssuesList = GetList(808); //Force it to get something so that the page loads

        return View(model);

    }

帖子创建代码:

    // POST: VRS_REQUEST/Create
        [HttpPost]
        [ValidateAntiForgeryToken]


        public ActionResult Create(int RES_ID, FormCollection Collection,     [Bind(Include = Some Fields.... 

        {
            //ViewBag.ListFull = GetList(RES_ID);

            //UpdateList(int.Parse(Collection["RES_ID"])); // Was part of the attempt at dynamic data for partial view that shows forbidding


          ... CODE THAT DOES STUFF

                return RedirectToAction("Index");
            }
            return View(model);
        }

当前代码的工作方式,它忽略下拉列表,只填充我硬编码的值。有人会说我为什么要使用一个观景包,这就是我所知道的。我根本不懂模特。如果不能通过创建视图来完成这一点,因为屏幕是空的,那么为我工作很酷 - 我只需要知道。

这是我的代码,因为我已经中止了尝试使用动态数据再次执行此操作的想法MVC说这是禁止的。

如果我从create controller get函数中删除它,页面将不会加载,我得到null错误;

      ViewBag.VehIssuesList = GetList(808);

我必须强制页面的值加载...所以这是因为我试图在创建视图上执行此操作而MVC无法处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

_WidgetListPartial @if语句将处理null情况。如果部分视图的数据返回为null。

Launching interactive setup of CloudWatch Logs agent ... 

Step 1 of 5: Installing pip ...DONE

Step 2 of 5: Downloading the latest CloudWatch Logs agent bits ... 
Traceback (most recent call last):
  File "./awslogs-agent-setup.py", line 1144, in <module>
    main()
  File "./awslogs-agent-setup.py", line 1140, in main
    setup.setup_artifacts()
  File "./awslogs-agent-setup.py", line 696, in setup_artifacts
    self.install_awslogs_cli()
  File "./awslogs-agent-setup.py", line 523, in install_awslogs_cli
    subprocess.call([AWSCLI_CMD, 'configure', 'set', 'plugins.cwlogs', 'cwlogs'], env=DEFAULT_ENV)
  File "/usr/lib64/python2.7/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory