【发布时间】:2013-10-17 02:12:25
【问题描述】:
这就是我想要做的。我不明白为什么它需要一个可枚举的列表。
地址控制器.cs
public ActionResult ShowAddresses(List<Address> ReturnAddresses)
{
ShowAddressViewModel viewModel = new ShowAddressViewModel() { Addresses = ReturnAddresses, Message = "New" };
return PartialView("_ShowAddr", viewModel);
}
ShowAddressViewModel.cs
public class ShowAddressViewModel
{
public List<Address> Addresses { get; set; }
public string Message { get; set; }
}
_ShowAddr.cshtml
@model PeopleSoftControlsPOC.Models.ShowAddressViewModel
<script type="text/javascript">
</script>
<form>
<div class="addressBlock">
<table id="AddressTable">
@{int i = 0;}
@{PeopleSoftControlsPOC.Models.ShowAddressViewModel AddrModel = Model;}
@foreach (var item in AddrModel.Addresses)
{
<tr id = "@(i)">
<td>@(AddrModel.Addresses[i].Address1)
</td>
<td>@(AddrModel.Addresses[i].Address2)
</td>
<td>@(AddrModel.Addresses[i].City)
</td>
<td>@(AddrModel.Addresses[i].State)
</td>
<td>@(AddrModel.Addresses[i].Zip)
</td>
</tr>
@(i++)
}
</table>
</div>
</form>
编辑
从另一个局部视图的 java 脚本调用
$.ajax(url, {
data: { ReturnAddresses : InboundAddresses },
type: 'POST',
cache: false,
crossDomain: true,
success: function (data) {
//Populate the form values
// Start Dialog Code
$myWindow = jQuery('#myDiv');
//instantiate the dialog
$myWindow.html(data);
$myWindow.dialog({
title: 'Select an address',
modal: true,
width: 'auto'
});
$myWindow.show();
$myWindow.dialog("open");
// End Dialog Code
$('#AddressTable').on('click', 'tr', function () {
alert('You clicked row ' + ($(this).index()));
});
addAddress(Addresses, Message)
},
error: function (jqXHR, textStatus, errorThrown) {
$('#Message').val('Kaboom!!! (The call blew up...#thatsucks)');
alert('The Dialog Box call failed...Sorry :(');
}
});
}
“/PSPOC”应用程序中的服务器错误。 -------------------------------------------------- ------------------------------
The model item passed into the dictionary is of type 'PeopleSoftControlsPOC.Models.ShowAddressViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[PeopleSoftControlsPOC.Models.ShowAddressViewModel]'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: The model item passed into the dictionary is of type 'PeopleSoftControlsPOC.Models.ShowAddressViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[PeopleSoftControlsPOC.Models.ShowAddressViewModel]'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[InvalidOperationException: The model item passed into the dictionary is of type 'PeopleSoftControlsPOC.Models.ShowAddressViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[PeopleSoftControlsPOC.Models.ShowAddressViewModel]'.]
System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value) +383
System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary) +625
System.Web.Mvc.WebViewPage`1.SetViewData(ViewDataDictionary viewData) +74
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +138
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +378
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +33
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +727120
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +265
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +727076
System.Web.Mvc.Controller.ExecuteCore() +159
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +334
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +15
System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +52
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18044
【问题讨论】:
-
您在哪里遇到此错误 - 在 Razor 文件的 foreach 中?为什么你使用
AddrModel.Addresses[i].City而不仅仅是item.City等等。 -
你的
@(i++)应该有花括号而不是圆括号吗? (从其他代码猜测,我没用过Razor) -
@Rup 看看
<tr id="@(i)"> -
我正在从另一个局部视图的 javascript 调用此方法,该 javascript 返回内部服务器错误 500。我是 MVC 或任何与 C# 相关的新手。我从提琴手那里得到了错误信息。我必须更改所有剃须刀脚本。但是,即使我把所有的剃须刀脚本都拿出来了,我仍然得到了那个错误
-
将您的操作设置为 PartialViewResult 类型而不是 ActionResult。另外,请显示对操作的调用,您在使用 RenderAction 吗?...
标签: c# asp.net-mvc razor