Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC ASP.NET AJAX操作链接创建_Asp.net_Ajax_Asp.net Mvc_Asp.net Mvc 2_Asp.net Ajax - Fatal编程技术网

MVC ASP.NET AJAX操作链接创建

MVC ASP.NET AJAX操作链接创建,asp.net,ajax,asp.net-mvc,asp.net-mvc-2,asp.net-ajax,Asp.net,Ajax,Asp.net Mvc,Asp.net Mvc 2,Asp.net Ajax,您好,有谁能帮助我使用Ajax Actionlink从表单传递文本框的值吗。一整天都在想,我还是得到了null的值 我使用纯Ajax动作链接,没有任何按钮 下面是删除ajax动作链接的示例,非常完美! 但是在表单集合中使用它时,值总是空的。感谢您的帮助 这是我的密码: 客户视图 <%= Html.TextBoxFor(model => model.Fname, new { id = "Fname" })%> <%= Html.TextBoxFor(model =>

您好,有谁能帮助我使用Ajax Actionlink从表单传递文本框的值吗。一整天都在想,我还是得到了null的值

我使用纯Ajax动作链接,没有任何按钮

下面是删除ajax动作链接的示例,非常完美!

但是在表单集合中使用它时,值总是空的。感谢您的帮助

这是我的密码:

客户视图

<%= 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'); }" 
                        })%> 

我们不应该在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},
Id将只被发布,在将其发布到控制器之前,您需要提取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;
    };

您是否将控件放在表单中了?Delete(如您所述)将仅与id(您在ajax链接中添加的id)一起工作,但create需要为要创建的对象创建数据

或者将html放入一个表单中,如

    @using (Ajax.BeginForm("Create", new AjaxOptions { HttpMethod = "POST", OnSuccess = "alert('success')", OnFailure = "alert('fail')" }))
    {
        @*- your input fields - *@
        <input type="submit" value="Create" />   
    }

检查语法错误,此代码未经测试。

使用Ajax操作链接时,您将id作为唯一参数发送。因为这不是表单post Forms集合,所以当您尝试访问

objcustomer.Fname = formCollection["Fname"];
objcustomer.Lname = formCollection["Lname"];
如果您注意到共享的链接,那么它只需要一个参数作为操作方法参数,即id

从您给出的代码来看,您似乎希望将这两个Fname和Lname(尽管这些名称不符合标准)中的数据发布到服务器并保存它,您可能希望查看下面的链接

Stckoverflow答案


工作示例

您好,先生,我仍然得到空值。很抱歉,我忘了说我正在可编辑网格视图中工作。上述方法不起作用。根据您的链接,为什么需要id=1?您在问题中提到的链接用于删除,而您正在执行的是创建,这是另一回事。对于创建,您需要发布值正如我所说的,使用视图模型保存内容删除场景Sir是我的参考,但不使用button just AJAX操作链接。值1只是存储在ViewData[“item_id”]上的item_id的静态值它将作为item_id、fname、lname存储在数据库中。item_id是从我的主表tblitemsI中推导出来的。我不确定您将如何使用Ajax操作链接。因为用户将在文本框中输入数据,所以需要找到这些数据并发送给控制器。可能是Jquery拍摄的。先生,这是我创建的两个屏幕截图,请c见鬼。1. 2。实际上你想要什么?我不能理解。你想用这个截图说什么?当我填空文本框并点击插入链接时,它会动态保存到数据库,然后返回到同一个页面。
    $('#yourlink').click(function(){
        $.ajax({
        type: "POST",
        url: '@Url.Action("Create")',
        data: $('#yourFormId').serialize()
    })
    .done(function() { alert("success"); })
    .fail(function() { alert("error"); });
objcustomer.Fname = formCollection["Fname"];
objcustomer.Lname = formCollection["Lname"];