Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
如何将多个参数从javascript函数传递到视图中的控制器?_Javascript_C#_Asp.net Mvc_Razor - Fatal编程技术网

如何将多个参数从javascript函数传递到视图中的控制器?

如何将多个参数从javascript函数传递到视图中的控制器?,javascript,c#,asp.net-mvc,razor,Javascript,C#,Asp.net Mvc,Razor,目前,我有一个javascript函数,用于Razor视图中的一个按钮,当用户单击该按钮时,将显示一条弹出消息 $("#confirmBtn").click(function() { alert("user confirmed address: " + address + street + country); 现在我想更改这个函数,这样当用户单击它时,它会将参数作为HttpPost发送到控制器“SaveAddress” 我怎样才能做到这一点?谢谢。在MVC中使用ajax表

目前,我有一个javascript函数,用于Razor视图中的一个按钮,当用户单击该按钮时,将显示一条弹出消息

$("#confirmBtn").click(function() {
           alert("user confirmed address: " + address + street + country);
现在我想更改这个函数,这样当用户单击它时,它会将参数作为HttpPost发送到控制器“SaveAddress”

我怎样才能做到这一点?谢谢。

在MVC中使用ajax表单

@using (Ajax.BeginForm("SaveAddress", "YourController", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "elementwhichholdsthisform", OnSuccess = "OnFilterSuccess" }, new { id = "frmSaveAddress" }))
{
}
还要记住添加对的引用

jquery.unobtrusive-ajax.js

创建dto类:

public class AddressDto
{
    public string Address { get; set; }
    public string Street { get; set; }
    public string Country { get; set; }
}
您的控制器方法:

public ActionResult SaveData(AddressDto dto)
{
    // do stuff
    return Json(true);
}
您的ajax请求:

$("#confirmBtn").click(function() {
    // get values and pass them to dto
    var dto = {
        Address: address,
        Street: street,
        Country: country
    };

    $.ajax({
        url: 'MyController/SaveData',
        type: 'POST',
        data: { dto: dto },
        success: function (result) {
            // do stuff
        }
    });
}

您有两种选择,一种是使用表单回发,另一种是使用AJAX

--通过使用ajax,如下所示

--视图部分

<input type="text" id="address" name="address"/>

<input type="submit" id="btnSubmit" Value="Submit" 
 onclick="return myFunction()" />
注意:-您可以创建模型类,并能够发送多个值作为 演示我只是发送一个值

--通过使用下面的表单帖子

--模范班

public class MyClass
{
public string address {get;set;}
public string street {get;set;}
}
--控制器

    [HttpGet]
    public ActionResult SaveAddress()
    {
        //Write your code here      
        return View();
    }
   [HttpPost]
    public ActionResult SaveAddress(MyClass myclass)
    {
        //Write your code here      
        return RedirectToAction();
    }    
--看法

@model YourSolutionName.Models.MyClass
@使用(Html.BeginForm(“SaveAddress”,“您的控制器名称”,FormMethod.Post))
{
@Html.TextBoxFor(x=>x.address)
@Html.TextBoxFor(x=>x.street)
}

我希望它能帮助你。谢谢您

使用表单并提交值(或者如果您想停留在同一页面上,请使用ajax发布值)。@StephenMuecke如果我使用ajax,该怎么办?非常感谢你能给我举个例子。谢谢!我会尝试一下:欢迎光临,尽情享受
public class MyClass
{
public string address {get;set;}
public string street {get;set;}
}
    [HttpGet]
    public ActionResult SaveAddress()
    {
        //Write your code here      
        return View();
    }
   [HttpPost]
    public ActionResult SaveAddress(MyClass myclass)
    {
        //Write your code here      
        return RedirectToAction();
    }    
  @model YourSolutionName.Models.MyClass 

      @using (Html.BeginForm("SaveAddress","Your Controller Name",FormMethod.Post))
        {
           @Html.TextBoxFor(x => x.address )<br/>
           @Html.TextBoxFor(x => x.street)
   <br/>
    <input type="submit" id="btnSubmit" Value="Submit" />
        }