0

带有 Razor 视图的 C# MVC 应用程序

我正在尝试使用 Jquery 提交表单,并想知道如何覆盖“数据”中的值。当我单击提交并调试控制器操作时,我可以看到所有数据。

在我的表格上,我有一个艺术家的名字。

我正在尝试在提交数据之前使用 javascript 覆盖艺术家姓名。

如果那不可能,我只想将艺术家姓名传递给控制器​​。

这是我提交表单的脚本。

var artist = "Dick"

$('#publishingForm').submit(function(){


    $.post('PublishVideo', $('#publishingForm').serialize(), artist, function (data) {
        data.artists = artists;
        //call back happens here. 
    });

    return false; 

});

所以两个问题:

  1. 如何覆盖“数据”中的值?
  2. 拨打电话时如何传递参数?我不确定语法
4

2 回答 2

0

如果我正确理解您的问题,您可以手动创建 JSON 对象并使用您需要的任何值来混合,而不是使用表单提交,然后使用 $.ajax 或 $.post 发布该对象。例如,沿着这些思路

// HTML markup
<input id="artist" type="text" />
<input id="submit" type="submit" />

// JS
$("#submit").click(function () {
    var artistInfo = {
        name: $("#artist").val()
    };

    $.ajax({
        type: "POST",
        url: "/Artist/Save",
        data: artistInfo,
        success: function (data) {
            // handle success callback
        },
        dataType: function (data) {
            // handle success callback
        }
    });

    return false;
});
于 2013-08-24T22:31:33.500 回答
0

您可以使用 jQuery 在进行 POST 之前更新艺术家输入,如下所示:

var artist = 'Dick';
$('#publishingForm').submit(function(){
    $('#id_for_the_artist_input').val(artist);


    $.post('PublishVideo', $('#publishingForm').serialize(), function (data) {
        data.artists = artists;
        //call back happens here. 
    });

    return false; 

});

或者,您可以传递一个额外的 URL 参数,如下所示:

var artist = 'Dick';
$('#publishingForm').submit(function(){

    var params = $('#publishingForm').serialize();
    params = params + '&artistOverride=' + artist;

    $.post('PublishVideo', params, function (data) {
        data.artists = artists;
        //call back happens here. 
    });

    return false; 

});
于 2013-08-24T22:26:11.263 回答