2017-01-17 1 views
0

Привет, у меня есть одна страница регистрации и она содержит поля UID, UserName, Password. Я использую dev Express gridview. Когда я нажимаю кнопку «Редактировать», ему нужно передать конкретное значение строки строки контроллеру, но он передает нулевой параметр в контроллер. Теперь, что я хочу, я хочу передать конкретный ключ строки. Параметр для контроллера, нажав кнопку редактирования в виде сетки в mvc dev express gridview, используя SetDataItemTemplateContent.Below. Я отправляю свой код, пожалуйста, любой правильный код и скажите мне, какую ошибку я сделал.Как передать параметр из gridview на контроллер с помощью SetDataItemTemplateContent в mvc4 devExpress, нажав кнопку «Изменить»?

My Model (UserMasterViewModel)

public int UID{get;set;} 
public string UserName{get;set;} 
public string Password{get;set;} 

My Controller Code

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) 
} 

Grid View Code

@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() 

EDIT Просмотр

@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> 

В этом я нажав кнопку Изменить это проходящее нулевое значение в контроллер. Я пробовал много способов, но не мог передать параметр UID контроллеру. Не знаю, какую ошибку я совершил в этом действии. Я попытался улучшить свой уровень, чтобы объяснить эту проблему. Любой понимает и помогает мне решить эту проблему.

Спасибо ..

ответ

1

Попробуйте следующее»

изменения:

Html.ActionLink("Edit", "UserMasterEdit", new { UID = DataBinder.Eval(c.DataItem, "UID") }) 

To:

Html.ActionLink("Edit", "UserMasterEdit", new { id = DataBinder.Eval(c.DataItem, "UID") }, null) 

Имя параметра должно совпадать с именем параметра контроллера. Добавленный нулевой аргумент необходим, чтобы гарантировать, что вызывается правильный метод синтаксического анализа. см. эту ссылку: HTML.ActionLink method

Смежные вопросы