|
|
微笑的闹钟 · js识别字符串中换行符_js识别换行符· 1 月前 · |
|
|
想发财的野马 · JavaScript实现解析xml文件数据_ ...· 4 周前 · |
|
|
苦恼的鸡蛋面 · Svelte ...· 3 周前 · |
|
|
粗眉毛的薯片 · 像素操作 - Web API | MDN· 3 周前 · |
|
|
闷骚的李子 · Ubuntu Apache ...· 3 月前 · |
|
|
俊逸的青蛙 · mysql表查询、多表查询(增强查询的使用) ...· 1 年前 · |
|
|
想旅行的大蒜 · We need your consent· 2 年前 · |
|
|
腹黑的领带 · Jpa设置默认值约束 - 星小梦 - 博客园· 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识别字符串中换行符_js识别换行符 1 月前 |
|
|
粗眉毛的薯片 · 像素操作 - Web API | MDN 3 周前 |
|
|
想旅行的大蒜 · We need your consent 2 年前 |
|
|
腹黑的领带 · Jpa设置默认值约束 - 星小梦 - 博客园 2 年前 |