我有一个PartialView(_Letra),它从名为Music的Controller中接收信息......这样
public ActionResult CarregarLetra(string id, string artista, string musica)
{
return PartialView("_Letra", ArtMus(artista, musica));
}
public ResultLetra ArtMus(string artista, string musica)
{
//Conteúdo do metodo[..]
var queryResult = client.Execute<ResultLetra>(request).Data;
return queryResult;
}
直到那时,没问题。现在我需要将其他信息传递给同一个PartialView(_Letra)。此信息位于PartialView(_Cifra)中。
所以我在音乐控制器中添加了以下几行
public ActionResult CarregarCifra(string id, string artista, string musica)
{
return PartialView("_Cifra", GetCifra(artista, musica));
}
public ResultChords GetCifra(string artista, string musica)
{
var cfrTest= new Cifra();
var cifra = new ResultChords();
cifra.chords = cfrTest.GetInfs(artista, musica);
return cifra;
}
到目前为止所做的一切,PartialView _Cifra都会收到信息
我搜索并发现我可以在PartialView _Letra中使用Html.Partial来加载我的PartialView _Cifra,我这样做了
我添加了
<div class="item">
<div class="text-carousel carousel-content">
<div>
@Html.Partial("_Cifra", new letero.mus.Infra.Models.ResultChords());
</div>
</div>
</div>
现在它开始变得复杂,为什么,返回的是null,我相信这是由于我在Html.Partial中创建了一个新的ResultChords实例
我已经尝试过使用ViewBag在Partials之间转置信息,但可能不正确,因为返回也是null。
我已经做了很多研究,但是我没有得到PartialView _Letra所需的信息。
有一种更好的方法是不使用Html.Partial,或正确使用它,因为我不知道。
答案 0 :(得分:1)
In _Letra use
@Html.Action("CarregarCifra", "Music", new { id=Model.Id, artista=Model.Artista, musica=Model.Musica });
if the variables are available on the model then you can pass them in; otherwise, make use of the Viewbag and set them in CarregarLetra
答案 1 :(得分:0)
Are you always passing a new object to the second partial? You could just create it at the top of the new _Cifra
partial.
_Cifra.cshtml
@{
var resultChords = new letero.mus.Infra.Models.ResultChords();
}