如何将模型对象传递给现有视图?

时间:2011-04-15 07:45:44

标签: asp.net-mvc-3

我正在MVC3中创建应用程序。我有一个ConferenceController,它有一个像这样的Create()视图:

命名空间Configurator.Controllers {     public class ConferenceController:BaseController

{
    public ActionResult Create()
    {           
        return View(new ConferenceModel());
    }
}

}

我在此创建视图中有一个下拉列表,其中包含产品列表。在选择特定产品时,我会以这种方式在ConferenceModel的对象中获取该产品的详细信息:

  1. 要获取产品ID我正在使用jquery:
  2. $(“#ddlProductList”)。change(function(){             $ .get('/ Conference / GetProductDetailByProductID /',{ProductID:$(this).val()},function(response){             });         });

    1. 在ConferenceController中创建了一个函数,当下拉更改事件时,将调用该函数。

      public ActionResult GetProductDetailByProductID(string ProductID)     {         return View(ConferenceModel.GetProductDetailByProductID(ProductID));     }

    2. 在ConferenceModel中创建了一个函数,并根据数据库中的ProductID获取产品详细信息:

      public static ConferenceModel GetProductDetailByProductID(string ProductID)
      {
          ConferenceModel obj = new ConferenceModel();
      
          // Logic goes here to to get the details of product on the basis of productID and returning the object.
      
          return obj;
      }
      
    3. 当我尝试检查此功能时,它给出了我在本节COnferenceController页面找不到任何显示数据视图的错误:

      public ActionResult GetProductDetailByProductID(string ProductID)
      {
          return View(ConferenceModel.GetProductDetailByProductID(ProductID));
      }
      
    4. 我的问题是我可以使用现有的Create()视图来显示数据,或者我必须使用以下名称创建另一个视图:GetProductDetailByProductID()

    5. 任何人都知道这个问题然后请帮助我。

3 个答案:

答案 0 :(得分:0)

View方法存在重载,允许您指定视图名称:

  

return View(“Create”,ConferenceModel.GetProductDetailByProductID(ProductID));

此处的文档:http://msdn.microsoft.com/en-us/library/dd460310.aspx

答案 1 :(得分:0)

您可以使用

指定视图名称
return View("viewname", model)

默认情况下,操作名称用作视图名称。

答案 2 :(得分:-1)

您希望从客户端脚本中使用jQuery获取产品详细信息。

而不是回复:

public ActionResult GetProductDetailByProductID(string ProductID)
{
    return View(ConferenceModel.GetProductDetailByProductID(ProductID));
}

为什么不简单地返回一串JSON?

public JsonResult GetProductDetailByProductID(string ProductID)
{
    return this.Json(ConferenceModel.GetProductDetailByProductID(ProductID));
}