2012-12-03 17 views
1

我希望能夠將我的javascript函數的字符串輸出作爲參數傳遞給我的MVC 4 Razor Url Action,它本身作爲自定義屬性傳遞給輸入元素。這裏是我的看法文件中的剃鬚刀:如何在MVC 4 razor html url action中訪問JavaScript函數的字符串輸出?

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

我該怎麼做到這一點?

回答

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。

+0

恩,謝謝你的回覆。我做到了,但似乎js添加參數沒有傳遞給動作。當我斷點時它是空的! – Pejman

+0

一點:只要確保該動作的參數具有相同的名稱和查詢字符串參數? 你可以請你發佈你的示例腳本和操作方法嗎? – clklachu

0

試試這個:

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