Jef*_*ddy 3 partial-views razor asp.net-mvc-3
我有一个强类型视图Edit,名为OrderModel的模型.在此视图中,我使用的是一个强类型的局部视图,其中包含一个名为OrderTypeModel的模型.部分视图_OrderTypeAutoComplete,包含jqueryui自动完成文本框.如果我使用此代码渲染视图,
public ActionResult Edit(){
return View();
}
Run Code Online (Sandbox Code Playgroud)
我的编辑视图包含以下Razor标记
<div class="editor-field">
@Html.Partial("_OrderTypeAutoComplete")
@Html.HiddenFor(model => model.OrderTypeID)
@Html.ValidationMessageFor(m => m.OrderTypeID)
</div>
Run Code Online (Sandbox Code Playgroud)
我的部分视图包含此剃刀标记
@{
Layout = null;
}
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>
@Html.AutoCompleteFor(model => model.OrderTypeID, x => x.OrderType, "Items","Orders")
Run Code Online (Sandbox Code Playgroud)
当我渲染这个时,一切都很棒,我的自动完成效果很好(使用自动完成扩展).无论如何,我需要在我的初始OrderModel中初始化一些东西,所以我将控制器中的代码更改为此.
public ActionResult Edit(){
return View(OrderService.GetInitializedOrderModel()); //returns a new OrderModel
}
Run Code Online (Sandbox Code Playgroud)
现在当我渲染视图时,我得到了异常:传递到字典中的模型项的类型为'Testing.Models.OrderModel',但是这个字典需要一个类型为'Testing.Models.OrderTypeModel'的模型项.
在我的视图中的这一行@ Html.Partial("_ OrderTypeAutoComplete")
当我没有提供OrderModel时,似乎Razor引擎将为视图创建OrderModel,并为部分视图创建OrderTypeModel.这将得到相同的结果.
public ActionResult Edit(){
return View(new OrderModel())
}
Run Code Online (Sandbox Code Playgroud)
我是MVC的新手,所以我不确定这里发生了什么.我只是想在OrderModel模型中为我的视图提供一些简单的下拉值,这些值足够小,我不需要jquery回发来获取.这就是我在我的模型中为Http Get on my Edit操作初始化的值.
任何帮助,将不胜感激.谢谢.
Jes*_*ick 13
示例中缺少模型类的类定义,所以我无法确切地知道发生了什么,但......
该@ Html.Partial()方法有几个重载:
@Html.Partial(string)
@Html.Partial(string, Object)
@Html.Partial(string, ViewDataDictionary)
@Html.Partial(string, Object, ViewDataDictionary)
Run Code Online (Sandbox Code Playgroud)
前三个重载都只是最后一个的"别名" - 当所有的说完成时它是被调用的最后一个.
当您调用@Html.Partial(string)并且不传递模型值或ViewDataDictionary时,ASP.NET MVC将仅传递ViewDataDictionary以获取当前视图(即this.ViewData).
换句话说,打电话给:
@Html.Partial(string)
Run Code Online (Sandbox Code Playgroud)
基本上相当于:
@Html.Partial(string, this.ViewData)
Run Code Online (Sandbox Code Playgroud)
......在你的情况下,this.ViewData是类型OrderModel,而不是OrderModelType.
| 归档时间: |
|
| 查看次数: |
11211 次 |
| 最近记录: |