Saya memiliki tautan seperti ini:
<a href='Member/MemberHome/Profile/Id'><span>Profile</span></a>
dan ketika saya mengklik ini akan memanggil halaman parsial ini:
@{
switch ((string)ViewBag.Details)
{
case "Profile":
{
@Html.Partial("_Profile"); break;
}
}
}
Halaman parsial _Profile berisi:
Html.Action("Action", "Controller", model.Paramter)
Contoh:
@Html.Action("MemberProfile", "Member", new { id=1 }) // id is always changing
Keraguan saya adalah bagaimana saya bisa meneruskan "Id" ini ke bagian model.parameter ?
Pengontrol saya adalah:
public ActionResult MemberHome(string id)
{
ViewBag.Details = id;
return View();
}
public ActionResult MemberProfile(int id = 0)
{
MemberData md = new Member().GetMemberProfile(id);
return PartialView("_ProfilePage",md);
}
Jawaban:
Pertanyaan Anda sulit dimengerti, tetapi jika saya mendapatkan intinya, Anda hanya memiliki beberapa nilai di tampilan utama Anda yang ingin Anda akses sebagian yang diberikan dalam tampilan itu.
Jika Anda hanya merender sebagian hanya dengan nama parsial:
Ini sebenarnya akan meneruskan model Anda sebagai parameter implisit, sama seperti jika Anda memanggil:
Sekarang, agar parsial Anda benar-benar dapat menggunakan ini, juga perlu memiliki model yang ditentukan, misalnya:
Atau, jika Anda berurusan dengan nilai yang tidak ada pada model tampilan Anda (itu ada di ViewBag atau nilai yang dihasilkan dalam tampilan itu sendiri, maka Anda dapat memberikan
ViewDataDictionary
Lalu:
Seperti halnya model, Razor secara implisit akan melewatkan tampilan parsial Anda
ViewData
secara default, jadi jika AndaViewBag.Id
melihatnya, maka Anda dapat merujuk hal yang sama di parsial Anda.sumber
@Html.Partial("_SomePartial", new Microsoft.AspNet.Mvc.ViewFeatures.ViewDataDictionary(this.ViewData) { { "id", someInteger } });
ini untuk bekerja untuk saya. Saya menggunakan VS2015 DNX 4.5.1 jika ada orang lain yang memiliki masalah yang sama.Salah satu metode terpendek yang saya temukan untuk nilai tunggal ketika saya mencari sendiri, hanya melewati string tunggal dan menetapkan string sebagai model dalam tampilan seperti ini.
Di sisi Panggilan parsial Anda
Dan kemudian mengikat model dengan Partial View seperti ini
dan penggunaan nilainya dalam Tampilan Parsial seperti ini
Anda juga bisa bermain dengan tipe data lain seperti array, int atau tipe data yang lebih kompleks seperti IDictionary atau yang lainnya.
Semoga ini bisa membantu,
sumber
NullReferenceException
, referensi objek tidak diatur ke instance objek, itu mengatakan bahwaModel
itu nol. Ada ide?Berikut adalah metode ekstensi yang akan mengonversi objek ke ViewDataDictionary.
Anda kemudian dapat menggunakannya dalam tampilan seperti:
Yang jauh lebih bagus daripada
new ViewDataDictionary { { "Property1", "Value1" } , { "Property2", "Value2" }}
sintaksis.Kemudian dalam tampilan parsial Anda, Anda dapat menggunakan
ViewBag
untuk mengakses properti dari objek dinamis daripada properti yang diindeks, misalnyasumber
ToViewDataDictionary
metode statis ini ? Di mana-mana saya mencoba mengatakannya saya mendapatkan semacam kesalahan kompiler.Untuk inti Asp.Net lebih baik Anda gunakan
Jadi misalnya
sumber