ورود

View Full Version : سوال: فراخوانی یک اکشن و یک تگ با زدن یک لینک



mohammad_kazem
دوشنبه 13 آبان 1392, 09:43 صبح
سلام . وقت همگی بخیر
یک مشکل دارم. از دوستانی که میتونن خواهش میکنم کمک کنن. ممنون
توی سایتم یک لینک دارم که با actionlink تعریف شده. یک تگ div هم دارم که قراره از بانک پر بشه و در ابتدای لود صفحه hide هستش.سوال های من اینجاست:
1- میخوام وقتی کاربر روی لینک کلیک کرد یک اکشن از کنترلر فراخوانی بشه
2- مقدار محاسبه شده در اکشن به سمت ویو برگرده و در تگ div نشون داده بشه. یعنی هم visibility تگ به visible تغییر بکنه و هم مقداری که از سمت بانک میاد توش لود بشه. اگه بصورت ایجکس باشه بهتره.
چون mvc رو تازه شروع کردم خواهش میکنم کلی گویی نکنین. هنوز با خیلی از مباحث mvc اشنا نیستم.
با تشکر فراوان

par4parvaz
سه شنبه 14 آبان 1392, 17:43 عصر
سلام ، از Ajax.BeginForm می تونی استفاده کنی.

به این شکل :
این کد رو داخل view میزاری
<div id="testt">
@using (Ajax.BeginForm(actionName: "ActionName", controllerName: "Controll Name",
ajaxOptions: new AjaxOptions()
{
UpdateTargetId = "DivID ",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "loader",
HttpMethod = "Post"
}
, routeValues: new { id = @Item.ID, area = "" }))
{

<input type="submit" name="ConfirmBottom" value="تایید" />

}
</div>

و div که باید داخلش بعد از واکشی پر بشه رو هر جای view که خواستی می زاری با ID=DivID

حالا در فسمت Action از Controller مورد نظر کد مربوط به واکشی اطلاعات رو می نویسی ، مثل این:

[HttpPost]
public ActionResult ActionName(int id)
{
TableFromModel[] br = db.ModelFromTable.Where(p => p.ID == id).ToArray();
return PartialView("_PartialViewName", br);
}
و حالا در نهایت partialview رو بر اساس model طراحی می کتی، مثل این:

@model IEnumerable<KendoUIMoragheb.TableFromModel>
<script src="~/Scripts/jquery-1.7.1.min.js"></script>

<div id="divcontentWebGrid">

@if (Model.Count() != 0)
{
<div>
@foreach (var i in Model)
{
@i.Name.ToString();

}
</div>

<br />
<div>
@{
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 10);
grid.Pager(WebGridPagerModes.NextPrevious);
@grid.GetHtml(tableStyle: "WebGrid", htmlAttributes: new { id = "DataTable" }, headerStyle: "Header",
alternatingRowStyle: "alt", columns: grid.Columns(grid.Column("Name", "نام"),
grid.Column("famili", "نام خانوادگی"), grid.Column("FatherName", "نام پدر"))
);
}

</div>

}
</div>


به همین سادگی...