【问题标题】:mvc 4 pass textbox value to jquery objectmvc 4将文本框值传递给jquery对象
【发布时间】:2014-10-10 13:07:09
【问题描述】:

再次抱歉,同一个 DataFilter 人现在遇到了不同的问题 :)

我似乎不能做一件简单的事情

var datafilterModel = @Html.Raw(Json.Encode(new DataFilterModel("CustomerName", "string", "Mehdy"))) // This works perfect

现在我想从文本框中传递值而不是硬编码。我该怎么做?我在下面尝试过,但出现错误:

var datafilterModel = @Html.Raw(Json.Encode(new DataFilterModel("CustomerName", "string", $('#textFilterValue').val()))) // Too many characters in the literal

请大家帮我节省时间

【问题讨论】:

    标签: jquery asp.net-mvc-4 textbox parameter-passing


    【解决方案1】:

    由于您使用服务器端助手来生成 datafilterModel javascript 变量的值,因此您只能在页面在服务器上呈现时传递文本框的值。如果用户后来出于明显的原因更改了此值(正如您在之前的问题中向您解释的那样),您将只需要使用 javascript 来操作此变量的值,而不需要依赖任何服务器端助手。所以假设这个文本框绑定到某个模型值:

    @Html.TextBoxFor(x => x.TextFilterValue)
    

    然后您可以像这样传递值:

    var datafilterModel = @Html.Raw(
        Json.Encode(
            new DataFilterModel("CustomerName", "string", Model.TextFilterValue)
        )
    );
    

    如果你想实现一些对文本框值的动态绑定,你将不得不使用 javascript。例如,您可以订阅此文本框的onchange 事件,然后操作该值:

    $('#textFilterValue').change(function() {
        var filterValue = $(this).val();
        // here you can update the value of the datafilterModel javascript variable
    });
    

    更新datafilterModel 变量的方式取决于它的结构。例如,如果这是一个看起来像这样的 javascript 对象:

    var datafilterModel = { "Foo": "Bar", "Baz": "Bazinga" };
    

    如果您想更新Baz 属性的值,您可以简单地为其分配新值:

    $('#textFilterValue').change(function() {
        var filterValue = $(this).val();
        datafilterModel.Baz = filterValue;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      相关资源
      最近更新 更多