要立即陷入困境,这是一个非常基本的例子:
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应用程序显示控制台?
基本上,我有一个表格,其中包含公司的一些属性.这是"主"表,它们的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以某种方式检测并保持第一次数据拉动,但我不确定如何纠正它.
有什么建议?
编辑 - 更新 -
如果你能理解我想要实现的目标,那么有更好的解决方法吗?
我目前正在将一个非常古老但经常工作的ASP网站转换为ASP.Net.
它有一个完全自定义的书面用户管理系统.虽然它工作正常,但它确实需要刷新,因为我希望它对于未来的一些项目更加灵活.
当我向某人询问此事时,他们说"你需要使用微软提供商",并就微软如何免费发布所有这些东西以及它们有多好,应该尽可能多地使用它们做了演讲.
我已经对它进行了相当多的研究(主要是关于http://asp.net/learn上的视频),并且对一些功能印象非常深刻,因为似乎会有物品的拖放组件我的年龄要写.
但是,当前的成员资格数据库很难解释,它是一个完全自定义编写的数据库,它有许多内部关系......它与默认的Microsoft Provider并不真正"兼容".
我已经看过如何:创建自定义成员资格提供程序?,但我感到有点偏离了我的舒适区,并担心它会变慢,引入安全漏洞或根本无法工作.
在一天结束时,Microsoft成员资格提供程序应该为我工作 - 我真正需要的唯一自定义是登录使用我的数据库中的用户名/密码字段和创建用户脚本,其中有很多自定义代码到几个政党系统(需要提供服务等).
我只是想知道,如果遇到类似情况你会怎么做?
使用Microsoft成员资格提供程序,并以某种方式让它为您工作(虽然我想建议)
使用Microsoft成员资格提供程序,但使用围绕代码自定义的自定义提供程序.
使用您自己完全定制的解决方案
asp.net asp.net-membership membership-provider custom-membershipprovider
我在很大程度上理解Lambda查询,但是当我尝试学习MVC,并且我看到默认的Scaffolding模板时,他们使用Lambda表达式来处理这么多组件.
例如,DisplayForHTML Helper 就是一个例子.代码去了@Html.DisplayFor(model => model.name)
我希望没有人认为这是一个愚蠢的问题,只是虽然我(我认为)在大多数情况下理解Lambda表达式,但它们并不像常规代码那样"流动",我不得不考虑它很难理解实际发生了什么!
所以问题确实是,
1)对于使用Lambda查询这些HTML帮助程序,我有什么好处吗?
2)据我所知,DisplayFor只会连接到一个项目 - 所以,为什么不是这个@Html.DisplayFor(model.name)或者类似的?
请提供任何其他可以使MVC新手更好的信息!
目前,我有4个解决方案是独立的项目,但有相当多的重复代码,当涉及到的应用程序的几个领域.
目前它只是一些表格及其相关代码.
当我想要改变或改进某些东西时,我必须复制并粘贴到所有相关项目.
我看着为.dll文件/类库的解决方案之一中创建一个新的项目,但我觉得这是不正确的.(请说如果我错了).
因为它是所有应用程序的组件,我决定创建.dll文件/类库一个新的解决方案,并期待在移动共享代码交给那个 - 不过,已经永远也不会消失下来之前,这条路线,我有哪些选择从这里?
如果我需要进行简单的更改并在所有项目中更新它,或者相反,我是否应该始终在Visual Studio的单独实例中处理共享组件,我是否能够将此解决方案包含在其他解决方案中应用程序使用它?
我有一个(示例)应用程序,代码如下:
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)
第一个似乎在数据库中创建了一个允许空值的附加列,而第二个列似乎没有做任何事情. …
我以为我理解了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不是不可变的(但是我已经在几个来源上读过这个)?
问题是当我放置一个断点并调试/运行时,断点会自动移动.
编码之前/编码时:

单击run/breakpoint命中后:

断点通常对我来说没问题,但似乎它们有时会随机播放.我在很久以前第一次使用VB项目,最后,我通过删除断点并将其添加到其他仍然有用的地方来绕过问题.
虽然我可能会再次做同样的事情,而这只是它第二次发生(我记得),我真的不想要并且想知道究竟是什么问题.
我在这里已经阅读了许多类似的问题,但我看不到完全匹配,答案也无济于事.我尝试过 - 建造,重建,关闭/重新开放和清洁.
我只提供了代码位的图片,如果您还有其他需要,请告诉我.
正如问题所说,是否可以使用包含元素的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,如果是,我是否应该担心/是否会有任何好处?
基本上,我有一个包含多个项目的列表,我想要一个消息框来显示它们.
我最接近的是每个项目的消息框(使用foreach).
我想要的是相当于:
MessageBox.Show ("List contains:"+
Foreach (string str in list)
{ str + Environment.Newline + }
)
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用!这样做的正确方法是什么?
c# ×7
syntax ×2
.net ×1
actionlink ×1
asp.net ×1
asp.net-mvc ×1
breakpoints ×1
compilation ×1
datetime ×1
debugging ×1
html-helper ×1
lambda ×1
list ×1
razor ×1
string ×1
winforms ×1