小编Wil*_*Wil的帖子

如何在表单应用程序中显示控制台输出/窗口?

要立即陷入困境,这是一个非常基本的例子:

using System;
using System.Windows.Forms;

class test
{ 
    static void Main()
    { 
        Console.WriteLine("test");
        MessageBox.Show("test");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用默认选项(在命令行使用csc)编译它,正如预期的那样,它将编译到控制台应用程序.另外,因为我导入了System.Windows.Forms,它还会显示一个消息框.

现在,如果我使用该选项/target:winexe,我认为Windows Application与在项目选项中选择相同,正如预期的那样,我只会看到消息框而没有控制台输出.

(事实上​​,从命令行启动它的那一刻,我可以在应用程序完成之前发出下一个命令).

所以,我的问题是 - 我知道你可以从控制台应用程序获得"windows"/表单输出,但是无论如何从Windows应用程序显示控制台?

c# compilation console-application winforms

114
推荐指数
9
解决办法
28万
查看次数

ObjectStateManager中已存在具有相同键的对象.ObjectStateManager无法使用相同的键跟踪多个对象

基本上,我有一个表格,其中包含公司的一些属性.这是"主"表,它们的ID在许多其他表中使用.我基本上通过这种方法找到他们的ID:

private Company currentcompany()
    {
        Company cuco = db.Companies.Single(x => x.username == User.Identity.Name);
        return cuco;
    }
Run Code Online (Sandbox Code Playgroud)

我需要让用户能够更新存储在此表中的各种有关自己的详细信息,我做得非常好 - 但是,我注意到了一个很大的安全漏洞!

在Firefox上使用篡改数据(我想象Fidler /许多其他人),我可以轻松更改隐藏的ID并修改其他公司的详细信息.

为了阻止这种情况,我在修改操作中添加了以下行:

        Company cuco = currentcompany();

        if (company.id != cuco.id)
        {
            return Content("Security Error");
        }
Run Code Online (Sandbox Code Playgroud)

(仅供参考 - Company是代表公司的模型/ POCO,company本身就是表单数据.)

添加之后,如果我在表单数据中编辑ID,它会按预期工作并显示"安全错误",但是,如果没有错误我继续,我会在问题中得到错误.

"ObjectStateManager中已存在具有相同键的对象.ObjectStateManager无法使用相同的键跟踪多个对象."

我相信这是因为EF以某种方式检测并保持第一次数据拉动,但我不确定如何纠正它.

有什么建议?

编辑 - 更新 -

如果你能理解我想要实现的目标,那么有更好的解决方法吗?

entity-framework

59
推荐指数
2
解决办法
6万
查看次数

Microsoft会员提供商与自定义提供商对完整的自定义登录系统

我目前正在将一个非常古老但经常工作的ASP网站转换为ASP.Net.

它有一个完全自定义的书面用户管理系统.虽然它工作正常,但它确实需要刷新,因为我希望它对于未来的一些项目更加灵活.

当我向某人询问此事时,他们说"你需要使用微软提供商",并就微软如何免费发布所有这些东西以及它们有多好,应该尽可能多地使用它们做了演讲.

我已经对它进行了相当多的研究(主要是关于http://asp.net/learn上的视频),并且对一些功能印象非常深刻,因为似乎会有物品的拖放组件我的年龄要写.

但是,当前的成员资格数据库很难解释,它是一个完全自定义编写的数据库,它有许多内部关系......它与默认的Microsoft Provider并不真正"兼容".

我已经看过如何:创建自定义成员资格提供程序?,但我感到有点偏离了我的舒适区,并担心它会变慢,引入安全漏洞或根本无法工作.

在一天结束时,Microsoft成员资格提供程序应该为我工作 - 我真正需要的唯一自定义是登录使用我的数据库中的用户名/密码字段和创建用户脚本,其中有很多自定义代码到几个政党系统(需要提供服务等).

我只是想知道,如果遇到类似情况你会怎么做?

  1. 使用Microsoft成员资格提供程序,并以某种方式让它为您工作(虽然我想建议)

  2. 使用Microsoft成员资格提供程序,但使用围绕代码自定义的自定义提供程序.

  3. 使用您自己完全定制的解决方案

asp.net asp.net-membership membership-provider custom-membershipprovider

28
推荐指数
2
解决办法
4646
查看次数

MVC HTML助手和Lambda表达式

我在很大程度上理解Lambda查询,但是当我尝试学习MVC,并且我看到默认的Scaffolding模板时,他们使用Lambda表达式来处理这么多组件.

例如,DisplayForHTML Helper 就是一个例子.代码去了@Html.DisplayFor(model => model.name)

我希望没有人认为这是一个愚蠢的问题,只是虽然我(我认为)在大多数情况下理解Lambda表达式,但它们并不像常规代码那样"流动",我不得不考虑它很难理解实际发生了什么!

所以问题确实是,

1)对于使用Lambda查询这些HTML帮助程序,我有什么好处吗?

2)据我所知,DisplayFor只会连接到一个项目 - 所以,为什么不是这个@Html.DisplayFor(model.name)或者类似的?

请提供任何其他可以使MVC新手更好的信息!

c# asp.net-mvc lambda html-helper asp.net-mvc-3

26
推荐指数
2
解决办法
2万
查看次数

在Visual Studio中使用多个项目/解决方案的最佳方式?

目前,我有4个解决方案是独立的项目,但有相当多的重复代码,当涉及到的应用程序的几个领域.

目前它只是一些表格及其相关代码.

当我想要改变或改进某些东西时,我必须复制并粘贴到所有相关项目.

我看着为.dll文件/类库的解决方案之一中创建一个新的项目,但我觉得这是不正确的.(请说如果我错了).

因为它是所有应用程序的组件,我决定创建.dll文件/类库一个新的解决方案,并期待在移动共享代码交给那个 - 不过,已经永远也不会消失下来之前,这条路线,我有哪些选择从这里?

如果我需要进行简单的更改并在所有项目中更新它,或者相反,我是否应该始终在Visual Studio的单独实例中处理共享组件,我是否能够将此解决方案包含在其他解决方案中应用程序使用它?

projects-and-solutions visual-studio

23
推荐指数
2
解决办法
2万
查看次数

如何使用实体框架在FluentAPI /数据注释中定义外键可选关系?

我有一个(示例)应用程序,代码如下:

public class Posts
{

    [Key]
    [Required]
    public int ID { get; set; }

    [Required]
    public string TypeOfPost { get; set; }

    public int PollID { get; set; }
    public virtual Poll Poll { get; set; }

    public int PostID { get; set; }
    public virtual Post Post { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

基本上,我不知道是否有更好的方法这样做,但是,我有一个帖子列表,并且,人们可以选择它是a Poll还是a Post,As Entity Framework不能与Enums一起工作,我只是将它存储为字符串TypeOfPost然后在应用程序中,我以编程方式查询Poll或Post的值TypeOfPost.

我认为无论如何设置"只需要一个"或类似,所以,我处理应用程序中的所有检查和内容.(如果有人知道更好的方法,请说出来!).

无论如何,问题是,通过进入SQL Management Studio并手动编辑模式以允许空值,我可以正常工作 - 但是,我只是无法弄清楚如何在FluentAPI中执行此操作,并需要一些帮助.

我尝试了以下两种方法:

modelBuilder.Entity<Post>()
    .HasOptional(x => x.Poll).WithOptionalDependent();

modelBuilder.Entity<Post>()
    .HasOptional(x => x.Poll).WithOptionalPrincipal();
Run Code Online (Sandbox Code Playgroud)

第一个似乎在数据库中创建了一个允许空值的附加列,而第二个列似乎没有做任何事情. …

c# ef-code-first entity-framework-4.1

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

如果DateTime是不可变的,为什么以下工作?

我以为我理解了Immutable的含义,但是我不明白为什么以下编译和工作:

DateTime dt = DateTime.Now;

Console.WriteLine(dt);
Run Code Online (Sandbox Code Playgroud)

复制并粘贴下一部分几次

dt = DateTime.Now;
Console.WriteLine(dt);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它会运行,当我按下回车键时,它会在下次显示...我认为这是不可能的,我需要创建一个新对象.为什么允许/工作?或者,这本书我的工作是错误的,而且DateTime不是不可变的(但是我已经在几个来源上读过这个)?

.net c# datetime

21
推荐指数
3
解决办法
8360
查看次数

Visual Studio缺少/移动我的断点

问题是当我放置一个断点并调试/运行时,断点会自动移动.

编码之前/编码时:

在此输入图像描述

单击run/breakpoint命中后:

在此输入图像描述

断点通常对我来说没问题,但似乎它们有时会随机播放.我在很久以前第一次使用VB项目,最后,我通过删除断点并将其添加到其他仍然有用的地方来绕过问题.

虽然我可能会再次做同样的事情,而这只是它第二次发生(我记得),我真的不想要并且想知道究竟是什么问题.

我在这里已经阅读了许多类似的问题,但我看不到完全匹配,答案也无济于事.我尝试过 - 建造,重建,关闭/重新开放和清洁.

我只提供了代码位的图片,如果您还有其他需要,请告诉我.

c# debugging breakpoints visual-studio

20
推荐指数
2
解决办法
7447
查看次数

是否可以使用包含元素的ActionLink?

正如问题所说,是否可以使用包含元素的ActionLink,如果没有,实现它的最佳方法是什么?

例如,假设我有一个Span元素,我希望整个事情是一个超链接...以下工作:

<a href="/Site/Page/@Model.ID?Type=test">
                <span class="box5">Click anywhere in this box</span> </a>
Run Code Online (Sandbox Code Playgroud)

想象一下,span/css类box5使这个大...原来是一个DIV,但是,我发现它没有遵循标准,这似乎遵循确定.

这呈现并且工作正常,但是,无论如何使用ActionLink代替?我试图猜测语法,如(从表单复制):

@using (Html.Actionlink){<span class="box5">Click anywhere in this box</span>}
Run Code Online (Sandbox Code Playgroud)

没有任何运气的许多其他组合.

现在,我的手动HTML解决方法工作正常,我很高兴离开它,但是,是否可以使用MVC ActionLink,如果是,我是否应该担心/是否会有任何好处?

c# syntax actionlink razor asp.net-mvc-3

12
推荐指数
2
解决办法
6749
查看次数

如何将列表的内容放在单个MessageBox中?

基本上,我有一个包含多个项目的列表,我想要一个消息框来显示它们.

我最接近的是每个项目的消息框(使用foreach).

我想要的是相当于:

MessageBox.Show ("List contains:"+

Foreach (string str in list) 
{ str + Environment.Newline + }

                )
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用!这样做的正确方法是什么?

c# string syntax list

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