【问题标题】:How to access the string output of a JavaScript function in an MVC 4 razor html url action?如何在 MVC 4 razor html url 操作中访问 JavaScript 函数的字符串输出?
【发布时间】:2012-12-03 07:36:14
【问题描述】:

我希望能够将我的 javascript 函数的字符串输出作为参数传递给我的 MVC 4 Razor Url 操作,该操作本身作为自定义属性传递给输入元素。这是我的视图文件中的剃须刀:

@Html.TextBoxFor(model => model.SomeProperty, new{data_autocomplete = @Url.Action("SomeAction","SomeController", new { someParameter= "here I want the string output of my javascript function" })})

我怎样才能做到这一点?

【问题讨论】:

    标签: javascript asp.net asp.net-mvc razor url-action


    【解决方案1】:

    我相信这只能在呈现 HTML 之后完成。这背后的原因是 Razor 主要用于渲染 HTML。 Javascript 可以在 HTML 元素上运行,只有它被完全呈现。如果我理解您的问题,您希望将 javascript 函数呈现的 URL 动态分配给文本框的 data_autocomplete 属性。我会建议你下面的方法

    var currentURL = @Url.Action("SomeAction","SomeController");
    
    var parameters  = YourJSMethodToreturnTheParameterValue();
    
    $("#SomeProperty").attr("data_autocomplete",currentURL+'?someParameter='+parameters;
    

    理想情况下,TextBoxFor 会将属性名称呈现为其 ID。

    【讨论】:

    • 好的,谢谢您的回复。我做到了,但似乎 js 添加的参数没有传递给操作。当我断点它时它是空的!
    • 一点:只要确定动作是否有同名的参数和查询字符串参数?您能否发布您的示例脚本和操作方法?
    【解决方案2】:

    试试这个:

    var textbox = document.getElementById('SomeProperty');
    var currentUrl = textbox.getAttribute('data_autocomplete');
    currentUrl  += '?someParameter=' + myJsFunctionThatReturnsString();
    textbox.setAttribute('data_autocomplete', currentUrl);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多