asp.net - MVC ASP.NET AJAX操作链接创建

  显示原文与译文双语对照的内容

有人可以帮助我使用 Ajax Actionlink从表单传递一个文本框的值。 整天我都想得到空值。

我使用纯Ajax操作链接和任何按钮。

下面是删除ajax操作链接的示例 ! http://www.joe-stevens.com/2010/02/16/creating-a-delete-link-with-mvc-using-post-to-avoid-security-issues/

但是在表单集合中使用它总是空的。 感谢你感谢你的帮助 !

这是我的代码:

CustomerVIEW


<%= Html.TextBoxFor(model => model.Fname, new { id ="Fname" })%>


<%= Html.TextBoxFor(model => model.Lname, new { id ="Lname"})%>



 <%= Ajax.ActionLink("Create","Create", 


 new { id = 1}, 


 new AjaxOptions { 


 HttpMethod="POST",


 OnFailure ="function() { alert('fail'); }",


 OnSuccess ="function() { alert('success'); }" 


 })%> 



}

CustomerController

[AcceptVerbs(HttpVerbs.Post)] public ActionResult创建( formCollection formCollection ) {


 clsCustomer objcustomer = new clsCustomer();


 clsSession objSession = new clsSession();



 objcustomer.Fname = formCollection["Fname"]; --> NULL 


 objcustomer.Lname = formCollection["Lname"]; --> NULL



 }



时间: 原作者:

我们不应该在 ASP.NET MVC应用程序中使用 FormCollection 。 我们应该定义一个视图模型,让控制器操作把这个视图模型作为参数。 默认模型活页夹会自动填充属性。 这就是MVC的美妙之处。


public class YourViewModel


{


 public string Property1 { get; set; }


 public int Property2 { get; set; }


}



public Customer(YourViewModel model)


{



}



Formcollection将保存正在发布的值。 在你的情况下


new { id = 1},



只有在将FName和LName发送到控制器之前,才会将它的发布到FName和 LName

试试这个

@Html.TextBoxFor(model => model.Name, { @id ="txtname",onclick='oneditclick ("+ item.ActionID +")'

函数 OnEditClick(id) { var id= id ;


 $.ajax({



 url: 'EditAction',


 type: 'POST',


 data: JSON.stringify({ id:id }),


 dataType: 'json',


 contentType: 'application/json',


 success: function (result) {


 $('#lblMessageSuccess').html('Success');


 },


 error: function () {


 $('#lblMessageSuccess').html('Fail').fadeIn();


 }


 });


 return false;


 };



...