MVC C# JS根据后台传入对象设置
今天(20170401)在借鉴代码的时候,看到如下一串
@if (Model.Product.ID > 0)
{
<script>
$(function () {
setSpecList();
refreshProductItem();
}) //将产品的商品进行表格填入
function refreshProductItem() {
console.log("refreshProductItem.....");
//刷新productItem项的值
//$("#sku_list tr:gt(0)").remove();
var rows = $("#sku_list tr:gt(0)");
@if (Model.ItemList.Count>0)
{
for (int i = 0; i < Model.ItemList.Count; i++)
{
@:var row = rows.eq(@i);
@:row.find("input[name=_ItemID]").val("@Model.ItemList[i].ID");
@:row.find("input[name=_ItemNo]").val("@Model.ItemList[i].Number");
@:row.find("input[name=_Price]").val("@Model.ItemList[i].Price");
@:row.find("input[name=_Weight]").val("@Model.ItemList[i].Weight");
@:row.find("input[name=_Inventory]").val("@Model.ItemList[i].Inventory");
if(Model.ItemList[i].IsLock) {
@:row.find("a[name=_IsLock]").click();
}
}
}
}
</script>
}
这里,出现的@:就是能够将在c#进行的代码进行获取到js或者是整个html中
https://msdn.microsoft.com/zh-cn/gg981918
英文原文地址:https://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax
查了一下,发现关于Razor @:的介绍,还是有官方说明的,只是没去找过。
“@:字符序列”来显式指明内容块的开始。@:序列表明该行后面的内容应该被视为内容块:

以下是https://msdn.microsoft.com/zh-cn/gg981918中的内容,以防找不到,就拷过来了
ASP.NET MVC 3: Razor中的@:和语法
[原文发表地址] ASP.NET MVC 3: Razor’s @: and <text> syntax
[原文发表时间] December 15, 2010 11:48 PM
这是我正在写的博文系列中的另一篇,涵盖ASP.NET MVC 3的一些新功能:
· Razor的@:和<syntax>语法(今天)
本文将讨论新版Razor里视图引擎中支持的两个有用的语法功能:@:和<text>语法。
用Razor实现流畅编程
ASP.NET MVC 3配有一个新的名为“Razor”的视图引擎选项(除了已有的.aspx视图引擎)。您可以在我发表的
介绍Razor的博客上了解更多关于Razor的信息,比如我们为什么要引进它以及 它所支持的语法。
Razor尽量减少编写一个视图模板需要敲入的字符数,实现快速流畅的编程工作流。与大部分模板的语法不同,你不必在HTML中为了明确地标记出服务模块的开始和结束而中断编程。Razor解析器足够聪明,能从你的代码中推断出来。这使其简洁,富有表现力的语法输入干净,快速,有趣。
例如下面的代码片段迭代一列商品(product):

当运行时它产生的结果如下:

Razor用来隐式鉴别一个代码段什么时候结束的一个方法是寻找代表内容块开始的标记或元素内容。例如,在上面的代码段中Razor自动地把foreach循环里面的<li></li>模块当作一个HTML内容块,因为它看到开始的<li>标记序列并且知道这在C#中是无效的。
这个独特的技术——使用标记来识别代码中的内容块——是使Razor在涉及HTML生成的情况下简洁高效的一个重要因素。
用@明确表示内容的起始
然而不是所有的内容块都是以标记元开始,在有些案例中,Razor解析器不能隐式检测出内容块。
这就需要Razor通过在代码块中使用“@:字符序列”来显式指明内容块的开始。@:序列表明该行后面的内容应该被视为内容块:

举个更实际的例子。下面的代码段显示在商品脱销的时候,我们如何在商品名旁边输出信息“(已售完!)”:

由于我没有将消息“已售完!”嵌套在HTML标签元素内,Razor不能隐式判断@if块中的内容是否是一个内容块的开始。我们用“@:字符序列”来明确地指出我们代码段里的这行应被当作是内容块。
在@:内容块中使用代码碎块(Code Nugget)
除了输出静态内容,你也可以使代码碎块嵌入以@:字符序列开始的内容块中。
例如,在下面的代码段中我们有两个@:字符序列:

注意我们在第二个@:序列中如何发送内容块中的单品(Unit)数目的(例如“只剩下3了!”)。我们通过在内容行中嵌入一个@p.UnitsInStock代码碎块来实现。
多行内容
Razor使在HTML元素中包装多行内容变得简单。例如,下面我们的@if容器中的内容块被包装在一个HTML<p>元素中,这会使得Razor把它当作内容:

对于在那些没有被外部HTML元素包装的多行内容情形,你可以使用多个@: 序列:

另外 ,Razor允许你用一个<text>元素 来显式标识内容:

<text>标签是一个
Razor
特殊处理的元素。Razor将<text>块的内部内容视为内容块,不呈现包含那些内容的<text>标签(这意味着只呈现<text>内部内容,不呈现标签本身)。这使呈现没有被HTML元素包装的多行内容块变得方便。
如果你想要更简洁的@: 序列,<text>元素也能根据需要用来标识单行内容:

上面的代码将呈现出和我们早期看过的@:版本相同的输出。Razor会自动地从输出结果中省略掉<text>包装部件,只是呈现出<text>里面的内容。
总结
Razor启用一种简洁的模式化语法,实现非常流畅的编码工作流。
Razor能灵活地通过检测<tag>元素来识别内容块的起始,
从而让Razor方法在有HTML生成的场景中很有效,也使你不用明显地标注95% 的 if/else 和foreach 场景中内容块的开始/结束.
在当你不想在一个代码容器块中使用HTML元素,却需要更精确地标明一个内容块的边界时,你可以使用Razor的@:和<text>句法。
希望这些会有所帮助。
MVC C# JS根据后台传入对象设置的更多相关文章
- js将后台传入得时间格式化
//格式化时间函数Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月 ...
- js向后台传递对象
js: }; $.ajax({ url: "/.../...", type: "POST", async: false, data: JSON.stringif ...
- Freemarker的页面和JS遍历后台传入的Map
后端传到前端的Map Freemarker页面遍历Map: JS遍历Map:
- C#后台传入数据JS接收
今天碰到个问题,就是后台传入的数据,在JS中for循环的时候,下面那个j根本就不会往上加.所以只能将后台传入的对象,转换为json格式,由js进行解析后生成js中的对象 @{j=0;} for (va ...
- MVC中处理Json和JS中处理Json对象
MVC中处理Json和JS中处理Json对象 ASP.NET MVC 很好的封装了Json,本文介绍MVC中处理Json和JS中处理Json对象,并提供详细的示例代码供参考. MVC中已经很好的封装了 ...
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
sql server 关于表中只增标识问题 由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...
- AJAX - 封装的传参改为传入对象 XML JSON 数据格式
Ajax封装函数,上次是直接传参,这次在原来的基础上改进,模仿jQuery 直接传入对象,把之前的参数都变为这个对象的属性. 这样可以随意调换传入数据的次序. 其他优点? 需要再复习一下. Ajax处 ...
- js之数据类型(对象类型——构造器对象——数组1)
数组是值的有序集合,每个值叫做一个元素,而每一个元素在数组中有一个位置,以数字表示,称为索引.JavaScript数组是无类型的,数组元素可以是任意类型且同一个数组中不同元素也可能有不同的类型.数组的 ...
- js之数据类型(对象类型——构造器对象——对象)
JavaScript中除了原始类型,null,undefined之外就是对象了,对象是属性的集合,每个属性都是由键值对(值可以是原始值,比如说是数字,字符串,也可以是对象)构成的.对象又可分为构造器对 ...
随机推荐
- ARM mbed平台WIZwiki-W7500使用说明
ARM mbed IDE 是ARM内核微控制器的在线开发工具,其站点是:http://developer.mbed.org. 站点提供了在线编译器,不须要本地安装编译器就可以进行开发,因此没有地点.时 ...
- 每天一个linux命令:Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统至关只要,下面 ...
- Intellij修改模板代码
比如class的注释之类的,直接地址为 其中Include才是真正的内容
- Material Design Support 8大控件介绍
TextInputLayout 显示提示信息 能够通过调用setError()在EditText以下显示一条错误信息 FloatingActionButton 悬浮操作按钮 Snackbar 相当于底 ...
- RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
转自http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html 备忘 rpm 执行安装包 二进制包(Binary ...
- 为Hadoop集群选择合适的硬件配置
随着Apache Hadoop的起步,云客户的增多面临的首要问题就是如何为他们新的的Hadoop集群选择合适的硬件. 尽管Hadoop被设计为运行在行业标准的硬件上,提出一个理想的集群配置不想提供硬件 ...
- 线程与COM
场景: C++部分封装为COM,C#来调用.调用可能是在线程中的. 应用程序退出时,C#的部分 自动清理,某些线程可能还没有完全停掉. COM内部的东西也在释放内存. 这个时候,稍有不慎,就会崩溃. ...
- C++中使用ODBC API访问数据库例程
使用ODBC API访问数据库简单流程,供参考使用: ODBC API 123456789101112131415161718192021222324252627282930313233343536 ...
- javascript关于onclick()
1 <html> <head> <title>js1 </title> <style> #content{ margin:0 auto; t ...
- python使用paramiko自动化部署linux程序
使用paramiko模块,比os模块和command模块更加的兼容各种环境.后面两个只能在服务器本机 执行,此模块写得python文件无论是在本地还是服务器本身上运行,都能兼容. paramiko模块 ...