[英]how can i pass parameter from jqgrid to controller with datapost (using MVC4 and asp.net )
[英]How to pass Parameter from gridview to controller using SetDataItemTemplateContent in mvc4 devExpress by clicking Edit Button?
您好,我有一个注册页面,它包含名为 UID、用户名、密码的字段。 我正在使用 dev Express gridview。当我单击编辑按钮时,它需要将特定的行键值传递给 controller,但它会将 null 参数传递给 controller。现在我想要的是通过单击将特定的行键参数传递给 controller使用 SetDataItemTemplateContent 在 mvc dev express gridview 中的网格视图中编辑按钮。下面我发布我的代码,请任何人更正我的代码并告诉我我犯了什么错误。
我的 Model (UserMasterViewModel)
public int UID{get;set;}
public string UserName{get;set;}
public string Password{get;set;}
我的 Controller 密码
Public ActionResult UserMasterEdit(int? id)
{
View_MUsrRegistration userregistrartion = db.MUsrRegistration.Find(id)
UserMasterViewModel usermasterviewmodel = new UserMasterViewModel();
usermasterviewmodel.UserName = userregistrartion.UserName;
usermasterviewmodel.Password = userregistrartion.Password;
return View(usermasterviewmodel)
}
网格视图代码
@Html.DevExpress().GridView(
settings =>
{
settings.Name = "gvEditing";
settings.KeyFieldName = "UID";
settings.CallbackRouteValues = new { Controller = "UserMaster", Action = "UserMasterPartial" };
settings.Width = Unit.Percentage(100);
settings.Columns.Add(column => {
column.Caption = "#";
column.SetDataItemTemplateContent(c =>
{
ViewContext.Writer.Write(
Html.ActionLink("Edit", "UserMasterEdit", new { UID = DataBinder.Eval(c.DataItem, "UID") }) + " " +
Html.ActionLink("Delete", "UserMasterDelete", new { ProductID = DataBinder.Eval(c.DataItem, "UID") },
new { onclick = "return confirm('Do you really want to delete this record?')" })
);
});
column.Settings.AllowDragDrop = DefaultBoolean.False;
column.Settings.AllowSort = DefaultBoolean.False;
column.Width = 70;
});
settings.Columns.Add("UserName");
settings.Columns.Add("Password");
settings.ClientLayout = (s, e) =>
{
if(e.LayoutMode == ClientLayoutMode.Loading) {
if(Session["GridState"] != null)
e.LayoutData = (string)Session["GridState"];
}
else
Session["GridState"] = e.LayoutData;
};
}).Bind(Model).GetHtml()
编辑视图
@model MSSERP.Models.UserMasterViewModel
@{
Html.EnableClientValidation();
}
@using(Html.BeginForm("UserMaterUpdate", "UserMaster", FormMethod.Post, new { @class = "edit_form" })) {
@Html.HiddenFor(m=>m.UID)
<div class="line">
@Html.Label(UserNmae)
@Html.TextBoxFor(m=>m.UserName)
</div>
<div class="line">
@Html.Label(Password)
@Html.TextBoxFor(m=>m.Password)
</div>
<div class ="line">
<input type="submit" value ="Save"/>
</div>
在此我单击编辑按钮,它将 null 值传递给 controller。我尝试了很多方法但无法将 UID 参数传递给 controller。我不知道我在这个操作中犯了什么错误。 我尽力解释这个问题任何人都理解并帮助我解决这个问题。
谢谢..
尝试以下”
更改:
Html.ActionLink("Edit", "UserMasterEdit", new { UID = DataBinder.Eval(c.DataItem, "UID") })
至:
Html.ActionLink("Edit", "UserMasterEdit", new { id = DataBinder.Eval(c.DataItem, "UID") }, null)
参数名称应与控制器的参数名称匹配。 需要添加null参数以确保调用正确的解析方法。 看到这个链接: HTML.ActionLink方法
在您的 DisplayFor 所在的 GridView 中:
<a class="ml-2" href="/Merchant/Merchant_Boarding/@Html.DisplayFor(modelItem => item.GUID)" title="Edit">Edit</a>
或者使用 ActionLink:
@Html.ActionLink("Edit", "Merchant_Boarding", new { id = (item.GUID) }, new { @class = "ml-2" })
在您的获取中:
[HttpGet]
public IActionResult Merchant_Boarding(string? id)
{
var model = new MerchantDetail();
MerchantData merchdata = new MerchantData();
model = merchdata.RetrieveMerchantData(id);
merchdata.Dispose();
return View(model);
}
id 变量将包含您从网格视图传入的值。 从那里,您可以填充您的 model 并显示它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.