передача нескольких моделей в представления и частичные представления в Asp.net MVC 3 - PullRequest
0 голосов
/ 03 ноября 2011

Позвольте мне объяснить мою проблему:

У меня есть четыре таблицы, созданные как объекты с использованием Entity Framework.Я добавил класс репозитория в модель сущности для добавления / удаления / получения / запроса необходимых мне данных.

 public class YPlaylistRepository
{

    private aspnetdbEntities entities = new aspnetdbEntities();
    //
    // Query Methods
    public IQueryable<Song> FindAllSongs()
    {
        return entities.Songs;
    }

    public IQueryable<TopTenFav> FindAllTopTen()
    {
        return entities.TopTenFavs;
    }

    public IQueryable<Genre> FindAllGenres()
    {
        return entities.Genres;
    }
 }

и т. Д. *

Мое представление индекса разделено нанекоторые частичные представления, такие как:

 @{
ViewBag.Title = "Home Page";
  }

 @Html.Partial("_PartialPlayer")
 <div>

  @Html.Partial("_PartialOtherFav")
 <div id="topTenContainer" style="float: left; width:450px;margin-top:49px;">
 @Html.Partial("_PartialTopTenFav")
 @Html.Partial("_PartialCurrentFav")

, скажем, в моем _PartialOtherView у меня есть форма, где я хочу ввести некоторую информацию и добавить ее в базу данных:

 @model  yplaylist.Models.TopTenFav

 <div id="otherFavContainer">

 <div id="txtYoutubeLinkContainer">
 @using (Html.BeginForm("AddTopTenFav", "Home", FormMethod.Post, new { id = "AddTopTenFavForm" }))
 {

    <span id="youTubeLinkSpan">Youtube Link</span>
    <div>
        @Html.TextBoxFor(modelItem => modelItem.YoutubeLink, new { id ="youTubeLinkTxt" })
    </div>
    <span id="youTubeNameSpan">Song Title</span>
    <div>
        @Html.TextBoxFor(modelItem => modelItem.Title,new{id="youTubeNameTxt"} )
    </div>

 <button type="submit" name="btnCreateComment" value="">submit</button>
 }

 </div>
 </div>

 </div>

Этозапрос идет к контроллеру:

 public class HomeController : Controller
{
    private YPlaylistRepository repository = new YPlaylistRepository();


    public ActionResult Index()
    {
        var topTenList = repository.FindAllTopTen().ToList();
        return View(topTenList);
    }

    public ActionResult About()
    {
        return View();
    }

    public ActionResult Users()
    {

        return View();
    }

    [HttpPost]
    public ActionResult AddTopTenFav(TopTenFav topTen)
    {

        topTen.Date = DateTime.Now;
        topTen.UserName = User.Identity.Name;
        repository.AddTopTen(topTen);
        repository.Save();
        return RedirectToAction("Index");
    }

}

как мне решить проблему передачи правильной модели в мой индексный просмотр, когда все мои частичные просмотры будут иметь дело с разными моделями ... я пытался создать классэто инкапсулирует все мои модели, но это только создало дополнительные проблемы, потому что мой объект сущности возвратил определенные типы, не найденные в моей "HomeViewModel", такие как список объектов и т. д.

это действительно смущает меня, как бы я решил этоЯ уверен, что это можно сделать как-нибудь, но как правильно?заранее спасибо

1 Ответ

2 голосов
/ 03 ноября 2011

Я думаю (исходя из моего понимания проблемы), что вам нужно передать модель представления в индексное представление, содержащее любые другие модели, такие как:

public class IndexModel
{
    public TopTenFav TopTenFavourites { get; set; }

    ...
}

Затем в действии Index ()вы бы вернули модель представления:

public ActionResult Index()
{
    var topTenList = repository.FindAllTopTen().ToList();
    return View(new IndexModel() { TopTenFavourites = topTenList});
}

Тогда представление передаст эту модель в / из частичного представления как:

@Html.Partial("_PartialTopTenFav", Model.TopTenFavourites)

Передача формы в частичном представлении должнавызовите AddTopTenFav () и правильно передайте модель TopTenFav действию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...