我试图找出是否有办法更新记录,而不必列出要更新的每个列名称.
例如,如果我可以使用类似的东西,那将是很好的:
// the parts inside braces are what I am trying to figure out
UPDATE Employee
SET {all columns, without listing each of them}
WITH {this record with id of '111' from other table}
WHERE employee_id = '100'
Run Code Online (Sandbox Code Playgroud)
如果可以这样做,那么编写此类查询的最直接/最有效的方法是什么?
注意:我现在是戴着.Net开发人员的前端开发人员.可笑,我知道,但是我最终陷入这个混乱局面并不是这个问题的重点.有了免责声明,这就是正在发生的事情.
正如标题所示,我需要将一个相当长的HTML字符串(如在多页文本中)从View传递给Controller.我花了最后几天研究各种方法来实现这一目标.TBH,有些事情是有道理的,有些则没有.
这是我的代码片段里面的视图:
var html =
"<form id='htmlContent' action='" + customUrl + "' method='post'>" +
"<input type='hidden' name='content' id='contentStr'>" +
"</form>";
// string literal html gets appended to some element...
$("#htmlContent").submit();
Run Code Online (Sandbox Code Playgroud)
我想在此指出一些事项:
submit()
方法而不是使用Ajax
call.控制器:
[HttpPost]
public ActionResult ParseHtml(FormCollection form)
{
string htmlStr = form["content"].ToString();
....
// some code in between, but the first line appears to be causing an error or
// the value is not being retrieved.
....
return new …
Run Code Online (Sandbox Code Playgroud) 这个问题与NReco的PdfGenerator组件有关.
我使用此产品使用C#将动态生成的HTML字符串转换为.NET MVC框架内的Pdf文档.
虽然寻找各种方法来添加页码(例如,5 1)到PDF的页脚,我碰上了这和这对SO.毫不奇怪,两种选择似乎都提供了类似的方法来实现相同的目标.
虽然代码本身有意义,但我很难理解的是 - 我的文档内容(或HTML字符串)是在View中生成的.然后将HTML字符串传递给Controller(.cs)以进行实际的转换过程.由于我对MVC框架的知识非常有限,我认为你无法向Controller添加JavaScript代码(或者在那里?).
所以,我不太明白上面两个基于JavaScript的方法如何被整合到处理文档转换的C#函数中.或者这是应该在View中完成的吗?
控制器:
[HttpPost]
public ActionResult Html2Pdf(FormCollection form) {
var docTitle = form["doctitle"].ToString();
var headerHtml =
"<div style='width:100%; margin-top:1em; display:block;'>" +
"<img src='" + System.Web.HttpContext.Current.Server.MapPath("~") + "/media/images/document_banner.png' />" +
"</div>" +
"<div style='width:100%; bottom:110px; left:0; position:relative; display:block;'>" +
"<span style='color:#fff; font-size:2.5em; font-family:georgia; margin-left:1em;'>" + docTitle + "</span>" +
"</div>";
var footerHtml =
"<div style='width:100%; text-align:center; border-top:1px solid #abc; margin-top:2em;'>Page 0 of 0</div>;
var htmlToPdf = new HtmlToPdfConverter(); …
Run Code Online (Sandbox Code Playgroud) 注意:这个问题与Doug Crockford撰写的"JavaScript:The Good Parts"一书有关. 当我阅读有关Objects的章节时,我发现了如下声明:
如果名称是合法的JavaScript名称而不是保留字,则对象文字中属性名称周围的引号是可选的.所以周围需要引用
"first-name"
,但周围是可选的"first_name"
.
以下是本书中提供的对象文字的示例:
var stooge = {
"first-name": "Jerome",
"last-name": "Howard"
};
Run Code Online (Sandbox Code Playgroud)
现在,我可能误解了这里的文字,但对我来说,似乎Crockford先生说 first-name
(带连字符)是一个保留字,而first_name
(带有下划线)则不是.如果是这种情况,我不明白前者如何成为保留词.我在书中没有找到其他解释为什么会这样.有人可以解释一下吗?
我发现了很多示例,演示了如何添加一个POST提交方法AntiForgeryToken
的Ajax
调用.正如标题所示,我的需求是不通过ajax
电话提交表格.相反,我只是使用jQuery submit()
函数.
我在剃刀视图文件中的内容如下(注意:我使用的是html字符串文字,因为这个特定的DOM需要在以后动态地附加到单独的元素):
var html =
"<form id='exportPdfForm' action='" + exportUrl + "' method='post'>" +
"<input type='hidden' id='exportContent'>" +
"<input type='hidden' id='__RequestVerificationToken' value='@Html.AntiForgeryToken()'>" +
"</form>";
Run Code Online (Sandbox Code Playgroud)
显然,我正在使用以下jQuery提交此表单:
$("#exportPdfForm").submit();
Run Code Online (Sandbox Code Playgroud)
此外,使用DOM资源管理器,我可以看到AntiForgeryToken
值正确到位:
但是,当我实际提交表单时,我仍然遇到The required anti-forgery form field "__RequestVerificationToken" is not present
错误.我检查了其他几个Q&A,但似乎找不到任何可能对我的问题有所了解的东西.
我错过了一些明显或做错事吗?
编辑(解决方案)
分配__RequestVerificationToken
给该name
属性将解决这个问题:
<input type='hidden' name='__RequestVerificationToken' value='...'>
Run Code Online (Sandbox Code Playgroud) 对于以下JSON:
var myJSON =
{ "employee": [
{
"firstName": "John",
"lastName": "Doe",
"Age": 20
},
{
"firstName": "Jane",
"lastName": "Moe",
"Age": 35
},
{
"firstName": "Mike",
"lastName": "Poe",
"Age": 28
}
]
};
Run Code Online (Sandbox Code Playgroud)
假设我需要通过传递索引和属性名来获取特定值.例如,employee[1].lastName
会给我值"Moe".但是,我有一些粗略的时间搞清楚什么是一个简单的JavaScript函数,它将这两个值作为输入并将值作为输出返回.以下代码似乎不起作用:
function getValue(index, attrName) {
var val = eval("myJSON.employee[" + index + "]." + attrName); // is using eval() even a sound approach?
return val;
}
Run Code Online (Sandbox Code Playgroud) 我知道有几十个问题可以提出类似于我在标题中所说的内容,但我的挑战有点独特,我将在下面解释.我有一组div
块安排如下:
HTML:
<div id='container'>
<div id='left-pane'>Left pane</div>
<div id='right-pane'>
<div id='right-top-content'>Right top</div>
<div id='right-bottom-content'>Right bottom</div>
</div>
</div>
<button id='showlayer'>Add layer</button>
<div id='orphan'>Boo...I'm a blue layer!</div>
Run Code Online (Sandbox Code Playgroud)
我在这里要做的是div
在顶部叠加一层(另一个块),div#right-pane
使标记为"右上"(浅蓝色)和"右下角"(绿色)的区域完全覆盖.生成的布局如下所示:
看起来非常简单,但有几点需要注意.首先,应该保留两个div
元素#right-pane
(即,应该只保留在重叠的div下); 意思是以下方法对我没有任何好处:
$("#right-pane").empty().append($("#orphan"));
Run Code Online (Sandbox Code Playgroud)
其次,"左窗格"的宽度将动态变化,因此叠加div的定位也需要动态调整(我认为).正如您在我的jsFiddle演示中看到的那样(参见上文),overlay div具有'绝对'定位以及z-index值,这似乎是覆盖元素的最常用方法.这种工作,但"顶部"和"左"值都可以/将改变.
那么,应对这一挑战的最佳方法是什么?如果必须的话,我或许可以计算叠加div的"左"和"上"位置,但有更优雅的方法来实现它吗?