ورود

View Full Version : ترک نکردن صفحه بعد از اجرای action



uthman
جمعه 08 شهریور 1392, 18:35 عصر
سلام.من یه view دارم که در اون یه لینک گذاشتم که وقتی کاربر بر روی اون کلیک میکنه میره به action مربوطه و یه عدد تصادفی برمیگردونه؟الان مشکل من اینه که وقتی عدد رو برمیگردونه کل صفحه پاک میشه ؟من میخوام عدد برگت داده شده رو در همین page نشون یدم؟
کد های controller

public ActionResult Index()
{
ViewBag.Today =Date(DateTime.Now.Date.DayOfWeek.ToString());

return View();
}
public int Random()
{

return new Random().Next(10, 100);
}


کد های view مربوطه:

<div style="position:absolute;left:0;top:0;width:100px">


@Html.ActionLink("Create Random Number", "Random");
</div>

hakim22
جمعه 08 شهریور 1392, 19:40 عصر
اول باید بجای int در متد Random یک PartialView بسازید.

public PartialView Random()
{
model =Random().Next(10, 100);
return PartialView("_myRandomResult",model);
}


بعد باید ویوی مربوط به این PartialView رو بسازید که اسمشو گذاشتم myRandomResult_ که بهتره در همون فولدر Home قرار بدید. (از _ برای نام گذاری PartialView ها استفاده کنید . یک رسم نانوشته!)

که به صورت زیره :


@model int

<text>model</text>


حالا برمیگردیم به ویوی Index :
سریترین راه اجرای این PartialView استفاه از HTML.Action@ است البته مشکلش اینه که دیگه لینکی مشاهده نمیکنید و کلا وقتی پیج Load میشه این دستور مستقیما اجرا میشه.

اما اگر میخواهید با کلیک یک لینک عدد عوض بشه باید از Ajax.ActionLink@ استفاه کنید. به صورت زیر :


@Ajax.ActionLink(
"Get Random number",
"Random",
"Home",
new AjaxOptions { UpdateTargetId = "result" }
)

<div id="result"></div>
</div>


حالا وقتی روی لینک کلیک کنید مقدار نتیجه در div با آی دی result درج میشه.(به صورت Replace)

اگر بخواهید عدد چاپ شده قبلی پاک نشه و بعد از کلیک در روی لینک به انتهای لیست اضافه بشه باید یک تگ <br/> به انتهای myRandomResult_ اضافه کنید. بعد در Index View این کد رو عوض کنید :


@Ajax.ActionLink(
"Get Random number",
"Random",
"Home",
new AjaxOptions {InsertionMode = InsertionMode.InsertAfter, UpdateTargetId = "result" }
)


(کدها درون NotePad نوشته شده پس ممکنه یکی دوجا بزرگی یا کوچکی غلط باشه!)