小编Man*_*ert的帖子

在实体框架中排除更新属性

在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)

到目前为止,我发现的最好的方法是包容并设置我想要包含的所有属性,但我真的只想说哪些属性被排除在外.

c# asp.net-mvc entity-framework

74
推荐指数
3
解决办法
5万
查看次数

C#6/C++ ref关键字错误

我用我现有的解决方案尝试了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 ++之间的互操作发生了变化.

c# c++ interop ref roslyn

16
推荐指数
1
解决办法
1000
查看次数

有两种颜色的文字

我希望有一个文本可以在某个点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)

css svg css3

12
推荐指数
5
解决办法
1万
查看次数

LINQ继续Take后继续

说我们有一个 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)

c# linq

10
推荐指数
2
解决办法
593
查看次数

WinJS加载本地json文件

我正在敲打这个.

我找不到从WinJS App中的子文件夹打开简单json文件的方法.

我尝试过Ajax和WinJS.xhr,都无济于事.

我还考虑过使用像.NET中的File.Open这样的"老式"方式打开文件,但除了WinJS.Application.local.readText之外我找不到任何东西,我试用了绝对和亲戚路径.

我在这里结束了,有没有人有一个可以分享的工作片段?

javascript json file windows-8 winjs

5
推荐指数
1
解决办法
6705
查看次数

标签 统计

c# ×3

asp.net-mvc ×1

c++ ×1

css ×1

css3 ×1

entity-framework ×1

file ×1

interop ×1

javascript ×1

json ×1

linq ×1

ref ×1

roslyn ×1

svg ×1

windows-8 ×1

winjs ×1