Melihat:
<p>Parent ViewData: @ViewData["Test"]</p>
@Html.Action("MemberSignup","MemberSignupSurface")
Tampilan Parsial:
<p>PartialView ViewData: @ViewData["Test"]</p>
@using (Html.BeginUmbracoForm<MemberSignupSurfaceController>
("MemberSignupSubmit", "MemberSignupSurfaceController",FormMethod.Post))
{
<!-- Some form controls -->
<input type="submit" value="Signup" />
}
Pengendali:
public class MemberSignupSurfaceController : SurfaceController
{
public ActionResult MemberSignup()
{
ViewData["Test"] = "From MemberSignup";
// Do database stuff and create model from that
return PartialView("MemberSignupView", model);
}
[HttpPost]
public ActionResult MemberSignupSubmit(MemberViewModel model)
{
ViewData["Test"] = "From MemberSignupSubmit";
if (ModelState.IsValid)
{
// Redirect to success using TempData
}
else
{
return CurrentUmbracoPage();
}
}
}
Saat halaman saya memuat MemberSignup
dipanggil dan halaman tersebut ditampilkan
Data Tampilan Induk:
PartialView ViewData: Dari MemberSignup
Kemudian ketika saya mengirimkan formulir pada tampilan sebagian dengan input yang tidak valid sehingga tidak dapat divalidasi dan memanggil CurrentUmbracoPage()
dalam tindakan MemberSignupSubmit
Saya mendapatkan yang berikut ini:
ViewData Induk: Dari MemberSignupSubmit
PartialView ViewData: Dari MemberSignup
Jika saya menggunakan @Html.Partial
untuk merender tampilan sebagian saya, kedua kantong tampilan menunjukkan nilai yang sama yang ditetapkan dari tindakan pengiriman.
Saya sudah mencoba TempData
tetapi tidak berhasil juga. Apakah benar-benar tidak ada cara untuk mengembalikan apa pun ke tampilan sebagian setelah saya kembali dari tindakan kirim saat menggunakan @Html.Action
untuk merender formulir tampilan sebagian.
Masalah keseluruhan yang saya coba selesaikan adalah mengisi dropdown di formulir saya dengan nilai-nilai dari database. Menggunakan @Html.Partial
jangan izinkan saya melakukan ini tetapi memiliki viewbag yang berfungsi.