现在我在javascript中使用一个模型属性作为传递给控制器的json对象中的一个值。问题是javascript将分离在.js文件中,无法访问@Model。所以问题是;我如何从分离的.js文件中访问模型?
答案 0 :(得分:1)
你可以尝试RazorJs(不幸的是,似乎不再有人)
在Javascript文件中编写Razor-Style C#或VB.NET。也 包含一个http处理程序,用于在需要时提供这些文件。
您可以执行this:
之类的操作<强>查看/主页强>
@{
ViewBag.Title = "Home Page";
}
@Html.RazorJSInclude("~/Scripts/App/TestRazorJS.js")
<button id="btnSearch" name="submit" type="button" onclick="LoadFromRazor()">Search</button>
Scripts / App / TestRazorJS.js
function LoadFromRazor() {
$.ajax({
url: '@Url.Action("Test", "Home")',
datatype: 'json',
type: 'GET',
cache: false,
success: function () { console.log('done'); },
error: function (xhr, status, error) {
console.log(status);
}
});
}
答案 1 :(得分:1)
您可以像往常一样加载外部javascript,并将模型值作为属性发送到您的视图中的init方法:
<script type="text/url" src="externalscript.js"/>
<script type="text/javascript">
$(function() {
var model = home.views();
model.init({
modelProperty: '@Model.Property',
});
</script>
然后你的externalscript.js看起来像:
(function (window) {
home = window.home || {};
home.views = function () {
pub.init = function (options) {
var property = options.modelProperty;
};
return pub;
})(window);
您可以在外部脚本中使用您想要的属性。