Misalkan saya memiliki pandangan parsial ini:
Your name is <strong>@firstName @lastName</strong>
yang dapat diakses melalui tindakan khusus anak seperti:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
Dan saya ingin menggunakan tampilan parsial ini di dalam tampilan lain dengan:
@Html.RenderPartial("FullName")
Dengan kata lain, saya ingin melewatkan firstName dan lastName dari tampilan ke tampilan parsial. Bagaimana saya harus melakukan itu?
asp.net-mvc
asp.net-mvc-3
model-view-controller
controller
asp.net-mvc-partialview
Saeed Neamati
sumber
sumber
Jawaban:
Gunakan kelebihan ini (
RenderPartialExtensions.RenderPartial
di MSDN ):public static void RenderPartial( this HtmlHelper htmlHelper, string partialViewName, Object model )
begitu:
@{Html.RenderPartial( "FullName", new { firstName = model.FirstName, lastName = model.LastName}); }
sumber
@Html.Partial()
sama@{Html.RenderPartial();}
tapi jauh lebih cantik. Mereka juga memiliki kelebihan yang sama.Model.firstName
dan sejenisnya mengeluarkan pengecualian bahwaobject doesn't have a 'firstName' property
Berikut cara lain untuk melakukannya jika Anda ingin menggunakan ViewData:
@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })
Dan untuk mengambil nilai yang diteruskan:
@{ string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty; }
sumber
Anda perlu membuat model tampilan. Sesuatu seperti ini harus dilakukan ...
public class FullNameViewModel { public string FirstName { get; set; } public string LastName { get; set; } public FullNameViewModel() { } public FullNameViewModel(string firstName, string lastName) { this.FirstName = firstName; this.LastName = lastName; } }
kemudian dari hasil tindakan Anda meneruskan model
return View("FullName", new FullNameViewModel("John", "Doe"));
dan Anda akan dapat mengakses
@Model.FirstName
dan@Model.LastName
karenanya.sumber
pastikan Anda menambahkan {} di sekitar Html.RenderP Partial, seperti:
@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}
tidak
@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
sumber
{ }
, saya membuang waktu sampai saya menemukan artikel iniBerikut ini bekerja untuk saya di dotnet 1.0.1 :
./ourView.cshtml
@Html.Partial( "_ourPartial.cshtml", new ViewDataDictionary(this.ViewData) { { "hi", "hello" } } );
./_ourP Partial.cshtml
<h1>@this.ViewData["hi"]</h1>
sumber
Hanya:
@Html.Partial("PartialName", Model);
sumber