|
|
飞翔的感冒药 · Android ...· 1 月前 · |
|
|
打酱油的山寨机 · 纯CSS或js设置宽度溢出的图片水平居中(垂 ...· 1 月前 · |
|
|
喝醉的镜子 · wxWidgets中WebView的JS调用 ...· 3 周前 · |
|
|
风流倜傥的金针菇 · vscode 插件显示git - CSDN文库· 1 年前 · |
|
|
淡定的玉米 · 在尝试运行makemigrations时出现 ...· 2 年前 · |
|
|
机灵的乌冬面 · PHP实现显示日期和年月日代码(四行代码实现 ...· 2 年前 · |
|
|
谈吐大方的楼房 · 如何改变一个Java应用进程的名称?· 2 年前 · |
|
|
斯文的烤面包 · Rust 1.63 将支持 scoped ...· 2 年前 · |
我有一个带有javascript函数的
.csHtml
-razor文件,该函数在内部使用
@Url.Content
C#函数作为ajax URL。
我想将该函数移动到从我的视图引用的
.js
文件中。
问题是javascript不能“识别”
@
符号,也不能解析C#代码。
有没有办法从视图中引用带有"@“符号的
.js
文件?
我认为你不得不把JS代码放在视图中。据我所知,
@
解析器不会查看.js文件,因此任何使用Razor的解析器都不会工作。正如你已经注意到的,PLus本身不喜欢这个
@
字符无缘无故地出现,比如说,在字符串中。
为了将
@
变量放入.js文件中,您必须使用一个全局变量,并从使用该.js文件的mvc视图中设置该变量的值。
JavaScript文件:
var myValue;
function myFunc() {
alert(myValue);
}
MVC视图文件:
<script language="text/javascript">
myValue = @myValueFromModel;
</script>
只需确保对您的函数的任何调用都发生在视图设置了值之后。
我通常将需要访问模型属性的JS包装在函数中,然后在视图中传递@something。例如
<script type="text/javascript">
function MyFunction(somethingPresentInTheView) {
alert(somethingPresentInTheView);
</script>
在视图中,我添加了函数调用方式(只是一个例子):
<input type='button' onclick="MyFunction('@Model.PropertyNeeded')" />
也许这不是正确的方法。考虑关注点的分离。您的
JavaScript
类上应该有一个
data injector
,它在大多数情况下是
JSON
格式的数据。
在
script
文件夹中创建一个JS文件,并将此引用添加到
View
中
<script src="@Url.Content("~/Scripts/yourJsFile.js")" type="text/javascript"></script>
现在,考虑
yourJsFile.js
中的一个
JavaScript
文本类
var contentSetter = {
allData: {},
loadData: function (data) {
contentSetter.allData = eval('(' + data + ')');
setContentA: function () {
$("#contentA").html(allData.contentAData);
setContentB: function () {
$("#contentB").html(allData.contentAData);
};
还要声明一个类
public class ContentData
public string ContentDataA { get; set }
public string ContentDataB { get; set }
}
现在,从您的
Action
执行以下操作:
public ActionResult Index() {
var contentData = new ContentData();
contentData.ContentDataA = "Hello";
contentData.ContentDataB = "World";
ViewData.Add("contentData", contentData);
}
从你的角度来看:
<div id="contentA"></div>
<div id="contentB"></div>
<script type="text/javascript">
contentSetter.loadData('@Json.Encode((ContentData) ViewData["contentData"])');
|
|
干练的西装 · js splice使用总结(对js数组的增删改),替换数组的指定位置的数据,以及js数组的位置移动,向上(前)移动,或者向下(后)移动,el-table上移下移_splice数据上下替换 1 月前 |
|
|
风流倜傥的金针菇 · vscode 插件显示git - CSDN文库 1 年前 |
|
|
谈吐大方的楼房 · 如何改变一个Java应用进程的名称? 2 年前 |