我正在使用最新版本的ASP.NET MVC,SQL Server和Entity Framework.我没有先使用代码.
我可以使用我的EDMX文件生成的类轻松创建对象上下文.
但有没有办法DBContext从该类中获取对象?我想使用它的扩展功能.
根据我的研究,在MVC中编码复选框的正确方法如下.
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
Run Code Online (Sandbox Code Playgroud)
这将呈现一个复选框,为复选框呈现标签,并使标签可单击,这意味着单击标签也会切换复选框.
但是对于单个视图模型字段有多个复选框的情况呢?(例如,也许每个复选框代表一个整数值内的位.)或者,更好的是,单选按钮怎么样,哪里总有几个选项与同一个字段相关联?
在这些情况下,上面的代码似乎存在问题.要么不是所有元素都与相同的字段相关联,要么呈现具有相同ID的多个元素.
我一直在研究这个问题.我找到了很多解决方案; 然而,它们似乎都没有可点击的标签,或者它们需要一堆自定义和/或非标准编码.有些人完全避免使用RadioButtonFor/LabelFor,而是选择编写原始HTML.
编写原始HTML很好,但是MVC的设计者没有预料到我们可能需要为同一个字段使用多个单选按钮吗?而且,如果他们这样做了,他们是如何打算编码的呢?
编辑:
在研究了这个之后,下面的代码是我发现编码单选按钮的最佳方法.这段代码假设我为每个无线电选项定义了一个枚举.
@Html.RadioButtonFor(m => m.Gender, Gender.Male, new { id = "gender-male" })
@Html.LabelFor(m => m.Gender, Gender.Male.ToString(), new { @for = "gender-male" })
@Html.RadioButtonFor(m => m.Gender, Gender.Female, new { id = "gender-female" })
@Html.LabelFor(m => m.Gender, Gender.Female.ToString(), new { @for = "gender-female" })
Run Code Online (Sandbox Code Playgroud)
也许这是我能想到的最好的,但它仍然让我感到麻烦.
为什么要对ID这样的基本内容进行如此多的定制?再一次,微软是否预计我们需要与同一领域相关联的多个单选按钮?
如果枚举名称与单选按钮标签所需的描述不同,则此方法似乎不支持字段属性,例如[Display(Name = "")].
(我想多个复选框的正确处理将推迟到另一个问题.)
我在GitHub 上有一个存储库,并且在NuGet上创建了一个相应的包装。我想从我的 GitHub README 文件链接到 NuGet 包。
在修改了我在其他存储库中找到的一些文本后,我想出了以下内容:
[](https://www.nuget.org/packages/SoftCircuits.Silk/)
Run Code Online (Sandbox Code Playgroud)
在 GitHub MD 文件(和这里)中,这会生成以下链接:
这看起来不错,但我想找到更多关于此的信息。在谷歌搜索了很长一段时间后,我一直无法找到记录这些类型链接的位置。我有正确的用法吗?还有其他我可能想利用的选择吗?等等?
在某处有这些类型的链接的参考吗?
我有一个WinForms用户控件,我正在尝试获取当前字体的确切水平字符间距,预计是单行间距.
看起来字体的Size属性提供了这些信息,但显然是在点,我在像素工作.
var fontWidth = this.Font.Size; // Returns em-size in points--not pixels
Run Code Online (Sandbox Code Playgroud)
如果我自己创建字体,我可以指定它使用像素单位.但在我的情况下,字体是通过我的用户控件的属性设置的,我无法确定如何创建字体.不幸的是,字体的Unit属性是只读的.
如何以像素为单位制作现有字体返回指标?
我想针对实体框架实现以下逻辑.
var items = from item in myContext
select new {
Value1 = TweakValue(item.Value1),
Value2 = TweakValue(item.Value2)
};
protected int TweakValue(int value)
{
// Custom processing here
return value;
}
Run Code Online (Sandbox Code Playgroud)
由于TweakValue()在select条款中的调用,这将不起作用.我知道查询转换为SQL,问题是TweakValue()无法转换为SQL.我的问题是实现这一目标的最经济的方法是什么.我需要第二个循环来转换值吗?
我仍然试图熟悉LINQ表达式.
我有一个WinForms应用程序.我用以下代码填充了我的ComboBox:
cboGridSize.Items.Clear();
for (int i = 2; i <= 12; i++)
cboGridSize.Items.Add(new KeyValuePair<string,int>(i.ToString(), i));
cboGridSize.SelectedValue = 4;
Run Code Online (Sandbox Code Playgroud)
但是,最后一行绝对没有效果.出现ComboBox时未选择任何项目.
所以我正在做一些调试,并注意到一些奇怪的事情.设置cboGridSize.SelectedIndex为0 后,以下图像来自观察窗口.
Watch Window http://www.softcircuits.com/Client/debugwin.jpg
即使该SelectedItem属性包含我所期望的,SelectedValue仍然是null.虽然文档SelectedValue是可悲的,但我知道它将包含所选项目的值(SelectedItem).相反,这两个属性似乎完全不相关.任何人都可以看到我错了吗?
如你所见,我有ValueMember属性集.该DropDownStyle物业将设置为DropDownList.
编辑:
一旦Nikolay Khil在这里解决了这个问题(为什么SelectedValue不这样做的文档逃脱了我),我决定只编写自己的代码来完成同样的任务.我在这里张贴以防万一有兴趣.
static class ComboBoxHelper
{
public static void LookupAndSetValue(this ComboBox combobox, object value)
{
if (combobox.Items.Count > 0)
{
for (int i = 0; i < combobox.Items.Count; i++)
{
object item = combobox.Items[i]; …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET MVC网站.我需要一个页面,用户必须输入多个字段,包括图像文件.
我可以找到许多使用MVC上传文件的参考资料.但是他们不会将文件作为表单的一部分上传到其他字段.
理想情况下,字段和文件将发送到单个控制器.有小费吗?
我正在使用一些代码(由其他人编写),如下所示:
var _layoutRoot = $("#whatever");
eventName = 'CopyArticle';
eventData = { targetArticleIds: selectedArticleIds, targetCategoryIds: selectedCategoryIds };
// fire the event
if (eventName) // null is unexepcted here
_layoutRoot.trigger(eventName, eventData);
Run Code Online (Sandbox Code Playgroud)
我只是不太了解这意味着什么。
我可以看到这trigger会导致指定事件发生。但是从什么时候开始有 JavaScriptCopyArticle事件了呢?这如何是一个有效的事件以及如何处理它?
我一直在和这个摔跤,现在看起来似乎不太可能.
我想要Concat()两个IQueryable,然后将结果作为单个查询执行.我试过这样的事情:
var query = from x in ...
select new
{
A = ...
B = ...
C = ...
};
var query2 = from y in ...
select new
{
A = ...
B = ...
C = ...
};
var query3 = query.Concat(query2);
Run Code Online (Sandbox Code Playgroud)
但是,最后一行给出了以下错误:
'System.Linq.IQueryable'不包含'Concat'的定义,并且最好的扩展方法重载'System.Linq.ParallelEnumerable.Concat(System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable)'有一些无效的参数
看起来它正在期待IEnumerable争论.有没有办法解决?
看起来我可以将两个查询解析为IEnumerables然后再解决Concat()它们.但是创建单个查询会更有效,而且看起来应该是可行的.
我看到的Windows有一个Loaded事件,而不是一个Loading事件(因为有Closing和Closed事件).
我的期望是Loaded事件将在窗口实际显示之前发生.但是,查看Window Lifetime Events,它会显示Loaded事件发生在Activated事件之后.
我在Loaded事件中放了一些初始化代码,在显示窗口之后和我的内容出现之前有一段延迟.那么在窗口显示之前应该用于窗口初始化的最佳事件处理程序是什么?
c# ×5
.net ×2
asp.net-mvc ×2
linq ×2
winforms ×2
checkbox ×1
combobox ×1
dbcontext ×1
events ×1
file-upload ×1
github ×1
iqueryable ×1
javascript ×1
jquery ×1
nuget ×1
radio-button ×1
wpf ×1