假设我们在下面有以下JavaScript/jQuery代码
function createElement(i, value) {
return $('<div>', { id: "field" + i, text: value});
}
Run Code Online (Sandbox Code Playgroud)
我有一个id为"容器"的div然后我这样做:
var c=$("container");
c.append(createElement(1, "hello, world!");
Run Code Online (Sandbox Code Playgroud)
现在我有两个问题
createElement函数是否使用jQuery返回附加到容器的HTML字符串,还是动态创建一个附加到容器的DOM元素?
我不熟悉这种jQuery,你实际上通过$()选择器创建HTML字符串(或DOM元素).我尝试在jQuery的网站上查找关于这个主题的文档,但我找不到它.有人能指出我正确的方向吗?
在我的网站上,我有一些CSS类,当你鼠标悬停在它们上面时会设置固定类型的光标.当我在页面的任何地方进行AJAX调用时,我想将光标设置为等待图像,然后在AJAX调用完成后将其恢复为应该处理的任何光标.
我试过了:
$(document).ajaxStart(function () {
document.body.style.cursor = 'wait';
});
$(document).ajaxStop(function () {
document.body.style.cursor = 'auto';
});
Run Code Online (Sandbox Code Playgroud)
当我的鼠标位于一个带有改变光标的CSS类的DOM对象上时,这不起作用,我对如何使它这样做感到困惑.
目前我有一节课:
.pills a:hover
{
background-color: #0069D6;
color: #FFFFFF;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25);
text-decoration:none;
cursor:pointer;
}
Run Code Online (Sandbox Code Playgroud)
如果将鼠标悬停在此类中的对象上,并且启动了Ajax调用,则光标仍将保留为指针.
因此,不是在实例化数组然后将每个索引值设置为索引的情况下编写循环函数,有没有办法在LINQ中执行此操作?
所以我有一个剃刀观点:
@{
int i=1;
foreach(var story in Model.Storylines)
{
<span style="float:left;">Storyline @i</span> <span style="float:right; margin-right:5px;">Character Count: @story.CharCount</span><br /><br />
<textarea id=@("entry"+@i) rows="5" style="width:730px; overflow:auto;">@story.Description</textarea><br /><br />
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当页面最初加载时,具有id entry1的textarea具有类似"this is a story"的描述.一旦我在该文本区域中输入内容,然后点击一个按钮,其唯一功能是:
alert($("#entry1").text());
Run Code Online (Sandbox Code Playgroud)
我仍然得到"这是一个故事".为什么textarea不会更新我输入的文本?
我有一个IEnumerable,它有一个带有id的对象列表.我想选择ID为1,2,7,8,9,10和11的那些对象.我不知道等效SQL语句的LINQ/Lambda等价物(select*where where in(1,2, 7,8,9,10,11)).
我尝试过类似的东西:
var movieratings = new int[] {1, 2, 7, 8, 9, 10, 11};
list.ratings= list.ratings.Select(x => movieratings.Contains(x.Value));
Run Code Online (Sandbox Code Playgroud)
但这给了我一个编译错误,比如说不能从使用中推断出类型参数.
由于某种原因,我的一个特定的AJAX调用正在获得"无参数构造函数定义"错误.这是代码:
CallAndReplace(JSON.stringify(model), url, $("#panel"));
function CallAndReplace(data, url, replace) {
$.ajax({
url: url,
type: "post",
contentType: "application/json; charset=utf-8",
data: data,
success: function (result) {
replace.html(result);
},
error: function (x, e) {
if (x.status == 0) {
alert('You are offline!!\n Please Check Your Network.');
} else if (x.status == 404) {
alert('Requested URL not found.');
} else if (x.status == 500) {
alert('Internal Server Error.');
} else if (e == 'parsererror') {
alert('Error.\nParsing JSON Request failed.');
} else if (e == 'timeout') …
Run Code Online (Sandbox Code Playgroud) 我不确定为什么会这样.我有一个字符串数组应该发送到期望字符串数组的控制器操作.这是我的jQuery:
$.post("/@Model.Controller/@Model.Action", { "choices": ajax }, function (result) {
$("#label" + "@Model.Id").html(result);
});
Run Code Online (Sandbox Code Playgroud)
这是我的控制器动作:
public JsonResult UpdateMultipleType(string[] choices)
{
return Json(choices);
}
Run Code Online (Sandbox Code Playgroud)
我查看了Firebug,在Post标签中,标题为:
Parametersapplication/x-www-form-urlencoded
choices[] Comedy
choices[] Thriller
choices[] Action
choices[] Adventure
Run Code Online (Sandbox Code Playgroud)
我已经调试并确认它正在命中UpdateMultipleType,并且在调用该操作时字符串数组"choices"为null.调用会通过,但由于我们返回null,因此在调用完成后出现Javascript错误.
我不知道为什么我的控制器动作被发送为null,因为很明显有一个叫做选择的数组被发送过来.
通过jQuery ajax将字符串传递给控制器动作很简单,但是可以将一组变量序列化为对象,将其发送到控制器,并让控制器将其识别为对象吗?
例如:
在服务器中,您有一个Obj类:
class Obj{
string a; int b; double c;
}
Run Code Online (Sandbox Code Playgroud)
在控制器中,您有一个期望Obj对象的方法
public JsonResult UpdateObj(Obj obj){
//stuff
}
Run Code Online (Sandbox Code Playgroud)
在Jquery中是否有一种方法可以将一些JavaScript变量序列化为类Obj,然后通过AJAX帖子将其发送到MVC控制器动作?
我有3个表,Movie
,MovieRole
,和Actor
.MovieRole
是一个涉及电影和演员的多对多表,但它也定义了演员在桌面上的角色.因为actor可能在影片中具有多个角色,所以MovieRole
是一个包含3列的表:
MovieId int
ActorId int
RoleName varchar(100)
Run Code Online (Sandbox Code Playgroud)
而不是仅仅上唯一约束MovieId
和ActorId
,我们把它在所有三个领域.因此,不可能有一部电影,其中Eddie Murphy在其中并具有相同的角色.但如果埃迪·墨菲扮演不同的角色("教授克伦普","坚韧教授"中的"巴迪爱"),他可以两次联合同一部电影.
问题是我们在表格中有很多重复Actor
.所以可能有一个名为"爱德华墨菲"的参与者和另一个名为"艾迪墨菲"的参与者,他们两个都可以与"克伦普教授"相同的电影联系在一起.而"爱德华墨菲"可能与"诺比特"有关,但与"来到美国"无关,反之亦然"艾迪墨菲".
我需要创建一个存储过程,将actor和它们的电影角色关联合并在一起.它应该做的是发送两个演员ID,一个是主要演员记录,一个是删除.slated-for-delete actor中的电影角色关联必须与主要actor相关联.
我只有当被删除的actor与主actor没有任何角色冲突时才能使用存储过程.因此,如果sfd actor在电影B中并且主要演员在电影A中,那么它可以正常工作.或者如果sfd演员在电影A中但是角色不同,我们都很好.但是如果两个演员都在同一部电影中扮演相同的角色,那么我就会陷入这种束缚.
如何构建解决该意外事件的查询或存储过程?我一直在寻找完成这项工作的方法,看起来像使用游标会做到这一点虽然每个人都说尽量避免使用游标.有没有办法在不使用游标的情况下完成我想要的东西?
现在,sproc的基本要点是这样的:
alter procedure RoleMerge @ActorA int, @ActorB int as
update MovieRole set ActorId=@ActorA where ActorId=@ActorB
delete from Actor where Id=@ActorB
Run Code Online (Sandbox Code Playgroud) 阅读Topshelf集成的文档:https://github.com/dtinteractive/Topshelf.Integrations
它看起来应该像调度多个石英作业一样简单,HostFactory
但看起来第二个预定作业是唯一正在运行的作业.
我不确定如何从这里开始.但我需要安排两个按不同时间表运行的工作.第一个应该是每天运行而第二个每小时运行一次.
static void Main(string[] args)
{
HostFactory.Run(x =>
{
x.ScheduleQuartzJobAsService(q =>
q.WithJob(() => JobBuilder.Create<TmsIdImportTask>().Build())
.AddTrigger(() =>
TriggerBuilder.Create()
.WithSimpleSchedule(builder => builder
.WithIntervalInMinutes(Int32.Parse(ConfigurationManager.AppSettings["ScheduleImportFrequencyInMinutes"]))
.RepeatForever()).Build())
);
x.ScheduleQuartzJobAsService(q =>
q.WithJob(() => JobBuilder.Create<ImportTmsXMLTask>().Build())
.AddTrigger(() => TriggerBuilder.Create().WithSimpleSchedule(builder =>
builder.WithIntervalInMinutes(Int32.Parse(ConfigurationManager.AppSettings["TMSImportFrequencyInMinutes"]))
.RepeatForever()).Build())
);
x.RunAsLocalSystem();
var description = ConfigurationManager.AppSettings["ServiceDescription"];
x.SetDescription(description);
var displayName = ConfigurationManager.AppSettings["ServiceDisplayName"];
x.SetDisplayName(displayName);
var serviceName = ConfigurationManager.AppSettings["ServiceName"];
x.SetServiceName(serviceName);
});
}
Run Code Online (Sandbox Code Playgroud) jquery ×6
javascript ×3
asp.net ×2
linq ×2
ajax ×1
c# ×1
css ×1
lambda ×1
quartz.net ×1
razor ×1
sql ×1
sql-server ×1
topshelf ×1