代码之家  ›  专栏  ›  技术社区  ›  Jose

发动机局部火花视图

  •  1
  • Jose  · 技术社区  · 14 年前

    我想我只需要有人给我看明显的东西。

    我有一部分火花

    _消息项.spark

    在视图中使用的

    像这样

    <for each="var m in messageList">
      <MessageItem message="m"/>
    </for>
    

    部分内容如下:

        <tr id="${message.MessageId}">
            <td >${message.CreateDate.ToString("M/d/yy h:mm")}</td>
            <td >
                <b>${message.Subject}</b>
            </td>
            <td >${message.FromUser.FullName}</td>
            <td >${message.ToUser.FullName}</td>
        </tr>
        <tr>
            <td/>
            <td colspan="3">${message.Body}</td>
        </tr>
    

    像冠军一样工作,除非我尝试直接从这样的动作调用部分:

    public ActionResult GetMessage(Message message)
    {
      return PartialView("MessageItem",message);
    }
    

    当我这样做的时候,我得到

    error CS0103: The name 'message' does not exist in the current context
    

    因此,我当前的解决方案是创建一个包装部分,它向messageitem部分提供源

    像这样: _操作消息项.spark:

    <MessageItem message="(Message)ViewData.Model"/>
    

    那么,有人能说出明显的并告诉我如何修改吗?

    1)修改我的messageitem分部,这样无论是从partialview()调用还是在.spark文件中调用,它都会起作用。

    2)告诉我如何修改我的控制器操作,以便它不会引发异常

    4 回复  |  直到 14 年前
        1
  •  2
  •   queen3    14 年前
    <viewdata model="Message" message="Message" />
    <var msg="message ?? Model" />
    

    然后使用msg变量而不是message(如,$msg.subject等)。

    你也可以很幸运地加上一个

    <default message="Model" />
    

    但第一种方法是我认为有效的方法。

        2
  •  0
  •   Aaron D    14 年前

    当你传递参数时 PartialView ,spark对参数名一无所知,只知道传入的值。所以,它使用了论点的名字,我相信这是 模型 . 因为代码正在查找参数 消息 它抛出一个错误。我认为一个解决办法可能是改成这样:

    <MessageItem model="(Message)ViewData.Model"/>

    模型 可能被视为 模型 ,你必须猜测和检查。

        3
  •  0
  •   Mitch Rosenburg    14 年前

    尝试使用下划线和匿名对象调用分部。

     ViewData["message"] = message;
     return PartialView("_MessageItem");
    
        4
  •  0
  •   Dave Thieben    14 年前

    问题是,当您从操作中调用它时,您将数据作为模型传递,但从另一个视图中调用时,您将数据作为参数传递。如果另一个视图也共享相同的模型对象类型,则只能将数据用作模型。

    否则,我将在您的操作中在viewdata中传递它:

    public ActionResult GetMessage(Message message)
    {
        ViewData["message"] = message;
        return PartialView("MessageItem");
    }
    
    推荐文章