在MVC中更新模型时,我一直在寻找一种标记属性的正确方法.
例如,让我们采用这个小模型:
class Model
{
[Key]
public Guid Id {get; set;}
public Guid Token {get; set;}
//... lots of properties here ...
}
Run Code Online (Sandbox Code Playgroud)
然后MVC创建的编辑方法如下所示:
[HttpPost]
public ActionResult Edit(Model model)
{
if (ModelState.IsValid)
{
db.Entry(model).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
现在如果我的View不包含令牌,它将通过该编辑无效.
我正在寻找这样的东西:
db.Entry(model).State = EntityState.Modified;
db.Entry(model).Property(x => x.Token).State = PropertyState.Unmodified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的最好的方法是包容并设置我想要包含的所有属性,但我真的只想说哪些属性被排除在外.
我用我现有的解决方案尝试了VS2015,我得到了一些有效的新错误(比如编译器之前没有捕获到的无法访问的代码),但是我在这一行上也遇到了错误:
bool bWasAlreadyLocked = false;
oEnv.LockDoc(oWarnings, oEventDoc, ref bWasAlreadyLocked);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误CS1503参数3:无法从'ref bool [mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]'转换为'ref bool [mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089] "
我不明白为什么它会抛出那个错误,显然类型确实匹配.这是新编译器中的错误还是ref
关键字的行为发生了变化?
这种情况下的函数是一个C++函数,它使用从c ++类派生的ac#类导入到C#.它的签名是这样的:
void CBkgDocEnvX::LockDoc(
CFIWarningList ^oWarnings,
CBaseDoc ^oBaseDoc,
// Output
bool %rbWasAlreadyLocked)
Run Code Online (Sandbox Code Playgroud)
值得一提的是,我现在选择在解决方案中使用VS2013 c ++编译器作为c ++源代码,因此c ++方面应该与以前一样.我的猜测是c#和c ++之间的互操作发生了变化.
我希望有一个文本可以在某个点x切换颜色.我提供了一个使用文本两次产生结果的示例,开关为45px.有没有办法在没有文本两次的情况下在css中执行此操作?也许使用svg?
div{
width: 400px;
height: 40px;
border: 1px solid #000;
position: relative;
}
div>span{
position: absolute;
top: 0;
left: 0;
}
div :nth-child(2){
color: blue;
clip: rect(0 200px 40px 45px);
}
div :nth-child(1){
color: red;
clip: rect(0 45px 40px 0);
}
Run Code Online (Sandbox Code Playgroud)
<div>
<span>Some bicolored Text</span>
<span>Some bicolored Text</span>
</div>
Run Code Online (Sandbox Code Playgroud)
说我们有一个 IEnumerable<T> stuff;
是否有一种简洁的方法来获取n个元素,然后是第一个元素,而不是重新评估?
示例代码:
stuff.Take(10);
stuff.Skip(10).Take(20); // re-evaluates stuff
Run Code Online (Sandbox Code Playgroud)
我在想的可能是这个(不是工作代码)
var it = stuff.GetEnumerator();
it.Take(10);
it.Take(20);
Run Code Online (Sandbox Code Playgroud)
编辑以增加难度并澄清我想要完成的复杂性:我想在Take之后继续查询,即
it.Take(10);
var cont = it.Select(Mutate);
cont.Take(20);
cont = cont.Where(Filter);
cont.Take(5);
Run Code Online (Sandbox Code Playgroud) 我正在敲打这个.
我找不到从WinJS App中的子文件夹打开简单json文件的方法.
我尝试过Ajax和WinJS.xhr,都无济于事.
我还考虑过使用像.NET中的File.Open这样的"老式"方式打开文件,但除了WinJS.Application.local.readText之外我找不到任何东西,我试用了绝对和亲戚路径.
我在这里结束了,有没有人有一个可以分享的工作片段?