0

我想要分开的朋友 facebook 和 twitter。像这样 :

推特 脸书

编辑器模板: FriendModel.cshtml

@model App.Web.Models.FriendModel
<div>
<input type="checkbox" name="saveInputs" value="@Model.FriendID"/>
<img alt="" src="@Model.ProfileImageUrl" />
<strong>@Model.Name</strong> Friends: <strong>@Model.FriendsCount</strong>
</div>
<br />

浏览量: FriendTeam.cshtml

@model App.Web.Models.FriendTeamModel
@{
   ViewBag.Title = "FriendTeam";
}
<h2>
  FriendTeam</h2>

 @using (@Html.BeginForm())
{          @Html.ValidationSummary(true)     
  <h3>Twitter</h3>
  <br />    
   @Html.EditorFor(model =>     model.Friends.Where(x=>x.SocialNetworkName=="Twitter"))                  

 <h3>Facebook</h3>
  <br />    
   @Html.EditorFor(model => model.Friends.Where(x=>x.SocialNetworkName=="Facebook")) 
 }
 <div>
@Html.ActionLink("Back to List", "Index")

朋友团队型号:

public class FriendTeamModel
{
    public long FriendTeam{ get; set; }
    public IEnumerable<FriendModel> Friends { get; set; }
}

朋友型号:

public class FriendModel
{
    public string FriendID { get; set; }
    public string SocialNetworkName { get; set; }

    public string Name { get; set; }       
    public int FriendsCount { get; set; }      
    public string ProfileImageUrl { get; set; }
}

错误 :

模型只能与房屋所有权的表达式访问字段、一维数组的索引或自定义索引器单个参数一起使用。

谢谢,

4

3 回答 3

1

该错误基本上意味着您不能这样做:

@Html.EditorFor(model => model.Friends.Where(x=>x.SocialNetworkName=="Twitter")) 

如果您想全部显示它们,或者IEnumerable<FriendModel> Friends使用返回单个的过滤方法FriendModel,例如:

@Html.EditorFor(model => model.Friends.SingleOrDefault(x=>x.SocialNetworkName=="Twitter"))
于 2012-05-23T13:28:50.740 回答
0

您应该更改视图模型以更好地适应您的视图

public class FriendTeamModel
{
    public long FriendTeam{ get; set; }
    public IEnumerable<FriendModel> FacebookFriends { get; set; }
    public IEnumerable<FriendModel> TwitterFriends { get; set; }
}

并在控制器中设置这些参数值,而不是在视图中。这样,在视图中,您将拥有

@using (@Html.BeginForm())
{          
  @Html.ValidationSummary(true)     
  <h3>Twitter</h3>
  <br />    
   @Html.EditorFor(model => model.TwitterFriends)                  

  <h3>Facebook</h3>
  <br />    
   @Html.EditorFor(model => model.FaceookFriends) 
 }
于 2012-05-24T06:18:12.787 回答
0

我认为您需要以一种形式添加多个项目。这篇文章可能会帮助你:

jQuery Dynamic Form 是一个 jQuery 插件。它提供了基于 HTML 模板动态添加字段的能力。更新版本 1.0 已发布并已上传到 Google Code。它包括两个期待已久的功能:嵌套字段复制和数据注入。有时间我会更新示例,但是您已经在 zip 中有一个可用的示例包,快去下载吧! http://code.google.com/p/jquery-dynamic-form/downloads/list

于 2012-05-24T07:25:52.617 回答