通过jquery在asp.net mvc中传递强类型表单模型数据

时间:2011-11-03 23:18:54

标签: asp.net-mvc-3 jquery

很容易将表单提交到控制器中的动作方法,该控制器具有强类型文本框,例如,使用提交按钮,但是如果我想通过jquery发送与强类型文本框完全相同的表单或者$单击其他内容后调用.ajax。

像这样的代码:

 @Html.TextBoxFor(m => m.topTenFav.YoutubeLink,new { id="youTubeLinkTxt"})

为我们完成所有工作,并且在控制器中映射对象的属性非常简单

 [HttpPost]
 public ActionResult AddTopTenFav(HomeViewModel topTen)
 {
     topTen.topTenFav.Date = DateTime.Now;
     topTen.topTenFav.UserName = User.Identity.Name;
     repository.AddTopTen(topTen);
     repository.Save();
     return RedirectToAction("Index");
 } 

如何将此表单发送到控制器,将表单中的文本框映射到点击事件(如

)上的对象属性
 $("#btnAddGenre").click(function () {}

 @using (Html.BeginForm(
        "AddTopTenFav", "Home", FormMethod.Post, new { id = "AddTopTenFavForm" }))
 {

    <span id="youTubeLinkSpan">Youtube Link</span>
    <div>
        @Html.TextBoxFor(m => m.topTenFav.YoutubeLink,new { id="youTubeLinkTxt"})
    </div>
    <span id="youTubeNameSpan">Song Title</span>
    <div>
        @Html.TextBoxFor(m => m.topTenFav.Title,new { id="youTubeNameTxt"})
    </div>

    <button type="submit" name="btnSubmit" value="">submit</button>
 }

2 个答案:

答案 0 :(得分:1)

您可以执行以下帖子:

$(document).ready(function(){
    $('#btnAddGenre').click(function () {
        $.post(
            $('#AddTopTenFavForm').attr('action'),
            $('#AddTopTenFavForm').serialize,
            function (data) {
                window.location = @Url.Action("Index");
            },
            'html' // returned data type
        );
    });
});

我使用html数据类型,因此您可以返回任何内容,并使用window.location@Url.Action上进行重定向以提供位置。

请将其标记为已接受的答案

答案 1 :(得分:0)

是的,您可以使用jquery发布强类型textboxex的数据。 首先,你必须这样做 使用下面的代码获取jquery中所有textboxex的值。

            var xx= $("#xx").val();

这将从你的mvc文本框中给出xx中的val。 然后通过使用jquery ajax调用,您可以调用action方法。 代码如下。

$.get("/XXXX/YY/1", { xxName: xx }, function (data) {
                    var status = data;
                    alert(status);
                    if (status) {
                        return true;
                    }
                    else {
                        alert("The book with this name is already present. TRY DIFFERENT NAME!")
                        return false;
                    }
                });

这里xxxx是控制器amd yy是动作方法名称。下一个参数是您要作为参数发送的所有文本框的值。 这将执行ajax调用并返回值。

请告诉我,如果您发现任何问题,我将提供整个代码。