小编Ale*_*ner的帖子

MVC 3:HTML.DisplayFor和Lambda表达式

我找到了关于此的其他主题,但没有一个让我明白我想弄清楚的是什么.

我正在学习MVC 3,我在使用脚手架模板中的@HTML.DisplayFor()处理Lambda表达式时遇到了问题.

我正在使用MvcMusicStore示例应用程序,脚手架创建的视图如下所示:

@model IEnumerable<MvcMusicStore.Models.Album>

...

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Genre.Name)
        </td>
Run Code Online (Sandbox Code Playgroud)

我知道DisplayFor是HTML的扩展方法,它将表达式作为参数.我研究了Lambda表达式并在其他上下文中理解它们,例如使用可枚举的字符串.例如:

cities.Where(s => s.StartsWith("L"));
Run Code Online (Sandbox Code Playgroud)

令我难以置信的是,在第二个例子中,表达式的第一部分实际上是在第二部分(s.startswith ..)中使用,所以它是有意义的,我得到程序用它做的事情.但在MVC 3视图中并非如此.modelItem不是在任何地方使用.我尝试将"modelItem"重命名为任何类似的东西:

@Html.DisplayFor(iAmWearingShortPantsToday => item.Genre.Name)
Run Code Online (Sandbox Code Playgroud)

此代码也可以正常工作,正确显示所有项目和值.这使我怀疑在这种情况下"modelItem"实际上用于任何事情.但那么,为什么呢?

我也尝试将这个Lambda表达式转换为委托(我认为它是简短形式),如下所示:

@(Html.DisplayFor(delegate(IEnumerable<MvcMusicStore.Models.Album> modelItem) { return item.Genre.Name; }))
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.产生的错误是:

CS1946:无法将匿名方法表达式转换为表达式树

因此我的问题是:

什么是"modelItem"有用?HTML.DisplayFor()对modelItem做了什么?是否还有其他情况,表达的第一部分变得重要?

如果可以将此表达式转换为适当的委托,那么这也可以帮助我理解究竟发生了什么.

非常感谢

c# asp.net-mvc asp.net-mvc-3

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

比较多个文件时,我可以中止 git difftool 吗?

我犯了一个巨大的错误。

我已经配置git difftool为使用vimdiff,然后我执行了一个比较整个存储库的命令:

git difftool tag1 tag2

现在 difftool 以 diff 模式为每个已更改的文件启动 vim。当我关闭 vim 时,它会用下一对文件再次启动。一般来说,这就是我想要的,但是如果队列中的文件太多,我可以以某种方式中止这个过程吗?我知道我可以关闭终端,但是有更好的方法吗?

git vimdiff git-diff git-difftool

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

Flask-Admin ModelView没有正确处理外键(空白下拉列表)

烧瓶初学者在这里.我有一个使用以下型号的Flask应用程序:

class Question(db.Model):
    __tablename__ = 'questions'
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String, nullable=False)

class Answer(db.Model):
    __tablename__ = 'answers'
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String, nullable=False)

    question_id = db.Column(db.Integer, db.ForeignKey('questions.id'))
    question = db.relationship("Question", backref="answers")
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用以下行启动管理员:

admin = Admin(app)
admin.add_view(ModelView(Question, db.session))
admin.add_view(ModelView(Answer, db.session))
Run Code Online (Sandbox Code Playgroud)

现在在答案模型的创建表单中,我有一个问题的下拉框,但它没有正确填充:

使用Flask-Admin回答创建表单

快速入门指南不包括与外键关系模型,虽然有一些可能的实现方式的例子,它们不是在所有的记录.我很难弄清楚这里真正需要什么以及它是如何工作的.

flask flask-extensions flask-admin

4
推荐指数
1
解决办法
2466
查看次数

如何在Twitter Bootstrap中将导航下拉?

我正在使用Twitter Bootstrap开发一个主题,我试图让下拉导航中心而不是左对齐.要清楚:我所说的是将整个下拉框相对于其父级居中,而不是将文本居中放在方框内.

标记看起来像这样:

<ul id="nav" class="nav ww-nav pull-right hidden-phone">
  <li class="active"><a href="#">Words</a></li>
  <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Articles</a>
    <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
        <li><a href="#">Published</a></li>
        <li><a href="#">Categorized</a></li>
        <li><a href="#">Uncategorized</a></li>
        <li><a href="#">Award Winning</a></li>
    </ul>                   
  </li>
  <li><a href="#">About</a></li>
  <li><a href="#">Contact</a></li>
</ul>   
Run Code Online (Sandbox Code Playgroud)

为了澄清我的意思,我将附上一个截图:

Bootstrap下拉菜单

注意:我正在寻找适用于不同父项的通用解决方案.由于它是一个主题,导航项可以是3个字符到20个字符宽的任何内容.不幸的是,X像素的简单边距不会削减它.

PS:根据评论中的要求,我把整件事放在JSFiddle上:http: //jsfiddle.net/zdCYX/4/

谢谢

html css twitter-bootstrap

3
推荐指数
1
解决办法
7346
查看次数

如何更改"添加"和"修改"行的右手检查栏的颜色?

在大多数情况下,我已经能够配置所有界面颜色,但我无法找到更改检测栏颜色的位置以添加和修改的线条.

让它们在分裂窗口中间闪耀得如此明亮,这有点刺激.

如果不能选择更改颜色,则禁用它们将是一种解决方法.

PHPStorm inpsection吧

intellij-idea phpstorm

3
推荐指数
1
解决办法
344
查看次数

带有三角形的纯CSS语音泡泡:Firefox无缘无故地呈现丑陋的1px边框?

我正在尝试使用边框三角形技术做一个简单的语音气泡,通过覆盖两个三角形,一个用我想要的边框颜色,另一个用语音气泡的背景颜色,使用:before和:after伪类:

这是一个JSFIDDLE

.bubble:before, .bubble:after {
    border-style: solid;    
    content:"";
    display: block;
    position: absolute;
    width: 0;
}
.bubble:before {
    border-color: #DCDCDC transparent;
    border-width: 33px 0 0 33px;
    bottom: -33px;
    left: 40px;
}
.bubble:after {
    border-color: #FFFFFF transparent;
    border-width: 35px 0 0 35px;
    bottom: -30px;
    left: 37px;
}
Run Code Online (Sandbox Code Playgroud)

问题是.bubble:后三角形.出于某种原因,Windows 8上的Firefox渲染了一个我没有定义的额外边框,这看起来非常糟糕.

在此输入图像描述

它在Chrome上运行得非常好,甚至Internet Explorer 10,9和8也能很好地显示.

有任何想法吗?

css firefox css3

2
推荐指数
1
解决办法
1056
查看次数