2012-05-23 3 views
0

Я хочу отдельных друзей facebook и твиттер. Как это:asp.net mvc3, C#

TwitterFacebook

EditorTemplates: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") 

FriendTeamModel:

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

FriendModel:

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; } 
} 

Ошибка:

Модели могут использоваться только с полем доступа к выражениям домовладения, индексом одномерного массива или индивидуальным параметром индексатора.

Спасибо,

+1

Я хотел бы использовать модель представления здесь с 1 IEnumerable для щебета и один для Facebook, так что расщепление происходит в контроллере, а не мнение – Manatherin

ответ

0

Необходимо изменить вашу модель uit Ваше мнение

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) 
} 
+0

Большое спасибо, – saisneImane

1

Ошибка в основном означает, что вы не можете сделать это:

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

Либо петлю через ваш IEnumerable<FriendModel> Friends, если вы хотите, чтобы отобразить их все или использовать метод фильтрации, который возвращает Одинокий FriendModel, like:

@Html.EditorFor(model => model.Friends.SingleOrDefault(x=>x.SocialNetworkName=="Twitter")) 
+0

именно то, что в @ Html.EditorFor (модель => model.Friends.Where (x => x.SocialNetworkName == "Twitter")), которые являются проблемой. Я сделал то, что вы сказали, но та же проблема. Спасибо – saisneImane

+0

как сделать петлю? когда я использую @ Html.EditorFor (model => model.Friends) все появляются – saisneImane

0

Я думаю, вам нужно добавить несколько элементов в одну форму. эта статья может быть, поможет вам:

Jquery Динамическая форма представляет собой плагин для JQuery. Он дает возможность динамически добавлять поля на основе шаблона HTML. Обновление версии 1.0 - и добавлено в Google Code. Он включает в себя две долгожданные функции : дублирование вложенных полей и инжекцию данных.Я буду обновлять примеры, когда у меня есть время, однако у вас уже есть рабочий пример пакет в zip, идите скачать его! http://code.google.com/p/jquery-dynamic-form/downloads/list

+0

спасибо Nildarar – saisneImane