小编Den*_*els的帖子

应用程序的哪一层应包含DTO实现

最近我听说过很多关于DTO以及它们有多么有用但我找不到在ASP.NET上下文中使用它的好例子.

假设我使用三层架构:

  1. 数据层(使用实体框架)
  2. 业务层(WCF服务)
  3. 表示层(MVC 4.0 Web应用程序)

我应该从EF Employee对象转换为EmployeeDTO POCO?

假设我在数据访问层进行转换但是在WCF服务中会发生什么?它是否应该转换为另一个DataMember对象,当它到达UI层(MVC Web应用程序)时,它是否应该第三次转换为模型?如果有人能为我清楚这一点,我将不胜感激

c# asp.net asp.net-mvc wcf entity-framework

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

阻止WPF DataGrid中的多行选择

我在WPF DataGrid中有以下XAML标记:

<DataGrid ItemsSource="{Binding ResultList}" Grid.ColumnSpan="4" Grid.Row="7" Height="150" 
          HorizontalAlignment="Left" Margin="10,0,0,0" Name="gvResults" 
          VerticalAlignment="Bottom" Width="590" AutoGenerateColumns="False" SelectionChanged="gvResults_SelectionChanged"
           SelectionUnit="FullRow">
    <DataGrid.Columns>
        <DataGridTextColumn IsReadOnly="True" Binding="{Binding Name}" Header="Name" ScrollViewer.VerticalScrollBarVisibility="Auto" Width="190" />
        <DataGridTextColumn IsReadOnly="True" Binding="{Binding Surname}" Header="Surname" Width="190" />
        <DataGridTextColumn IsReadOnly="True" Binding="{Binding Age}" Header="Age" Width="*" />
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

是否可以阻止用户在按住Ctrl键或使用鼠标选择多行时选择多行?

我在SelectionChanged事件中尝试了以下代码,但它不起作用:

private void gvResults_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (gvResults.SelectedItems.Count > 1)
    {
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datagrid

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

WPF ItemsControl中的项间距

我正在List<string>ItemsControl中显示一个集合.问题是列表项之间没有间距TheyAreAllNextToEachOther.

如何在项目之间创建一些间距?

<ItemsControl Grid.Column="2" 
         Grid.ColumnSpan="2" 
         ItemsSource="{Binding Path=ShowTimes}"
         BorderThickness="0">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel IsItemsHost="True" Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

wpf xaml .net-4.0 itemscontrol

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

在C#中获得汇编描述的简化方法?

我正在阅读.NET 2.0书籍并遇到了这个获取应用程序程序集描述的示例代码:

static void Main(string[] args)
{
    Assembly assembly = Assembly.GetExecutingAssembly();
    object[] attributes = 
        assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
    if (attributes.Length > 0)
    {
        AssemblyDescriptionAttribute descriptionAttribute =
            (AssemblyDescriptionAttribute)attributes[0];
        Console.WriteLine(descriptionAttribute.Description);
    }
    Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

简单地获取程序集描述是相当多的代码,我想知道是否有更简单的方法在.NET 3.5+中使用LINQ或lambda表达式执行此操作?

c# linq reflection lambda .net-4.0

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

在SQL中防止Divide By Zero错误的简单方法

我有一个SQL查询,用于导致

除以零例外

我把它包装在CASE声明中以阻止这种情况发生.有更简单的方法吗?

这是我的代码:

Percentage =  CASE WHEN AttTotal <> 0 THEN (ClubTotal/AttTotal) * 100 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005 sql-server-2008

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

从xml文件中获取命名空间C#

我用相似的标题浏览了这些问题,但似乎无法找到我正在寻找的内容,如果有人发现类似的问题,请指点我的话.这是我的问题:

我有一个xsd文件,其开头是这样的:

我的xsd文件的开头 我需要知道如何以编程方式访问上述文件的命名空间值.

另外我的解决方案需要是通用的,所以我不能简单地搜索,xmlns:xs因为命名空间的确切名称可能有不同的名称

我尝试了以下内容,但在调试elementNamespace变量值时为空白"":

XElement elemet = XElement.Load(@"D:\xsd\Response.xsd");
string elementNamespace = elemet.GetDefaultNamespace().NamespaceName;
System.Diagnostics.Debug.WriteLine("Namespace " + elementNamespace);
Run Code Online (Sandbox Code Playgroud)

c# xml

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

在web api中传递Dictionary <string,string>参数

我正在尝试将一个Dictionary<string,string>对象作为参数传递给我的web api方法,但是如果我检查日志文件,它总是会计数为0:

Web api方法:

[HttpPost]
[ActionName("SendPost")]
public void SendPost([FromBody] Dictionary<string,string> values)
{
    using (var sw = new StreamWriter("F:\\PostTest.txt", true))
    {
        sw.WriteLine("Number of items in the dictionary - " + values.Count);
    }
}
Run Code Online (Sandbox Code Playgroud)

调用web api的逻辑:

public HttpResponseMessage Send(string uri, string value)
{
    HttpResponseMessage responseMessage = null;

    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri(URI);
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        var content = new FormUrlEncodedContent
            (
                new Dictionary<string, string> { { "value", value } }
            );

        responseMessage = client.PostAsync(uri, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

8
推荐指数
1
解决办法
6898
查看次数

将Word文档转换为base64字符串C#

我正在尝试获取活动Word文档的base64表示,而它仍然在Word中打开,并在ReadAllBytes()中收到以下错误:

该进程无法访问另一个进程正在使用的文件"文件路径"

public string GetEncodedTemplate()
        {
            //Convert a Word document's base64 representation
            string base64 = String.Empty;
            _application.ActiveDocument.Save();

            string docPath = _application.ActiveDocument.FullName;
            byte[] binarydata = File.ReadAllBytes(docPath);
            base64 = System.Convert.ToBase64String(binarydata, 0, binarydata.Length);
            return base64;
        }
Run Code Online (Sandbox Code Playgroud)

我确实理解错误发生是因为指定的文档仍在Word中打开,我的问题是 - 是否仍然可以获得文档的base64表示而不需要保存到临时文件?

我正在使用C#.NET 4.0和MS Office 2010

c# vsto ms-word .net-4.0

7
推荐指数
1
解决办法
5630
查看次数

VSTO Word激活功能区选项卡

我的单词vsto加载项中有以下ribbon.xml:

<tab id="TabLetters" getVisible="IsLettersTabVisible" label="Letters">
 <group id="LettersGroup" label="Letters">
  <toggleButton id="NewWithTemplate"
              label="New using template Controls"
              size="large"
              imageMso="FileNew"
              onAction="NewTemplated" />
  </toggleButton>
 </group>
</tab>
Run Code Online (Sandbox Code Playgroud)

以及click事件背后的代码:

public void NewTemplated(Office.IRibbonControl control, bool value)
{
  CloseDocument();

  var doc = Globals.ThisAddIn.Application.Documents.Add(Template: @"LETTER_V2.dotx", Visible: true);
  doc.Activate();

  _ribbon.ActivateTab("TabLetters");
}
Run Code Online (Sandbox Code Playgroud)

我希望这会导致我的功能区选项卡打开一个新窗口,但它仍然是可见/当前的HOME选项卡.如何让我的标签显示出来?

c# vsto ribbon ms-word

6
推荐指数
1
解决办法
7090
查看次数

如何使用ASP.NET动态创建文本框,然后将其值保存在数据库中?

我正在创建一个调查网站.我想动态添加文本框,然后在数据库中获取它们的值.

现在让我们说我从下拉列表中选择4个动态文本框.

选择下拉列表的代码:

     protected void NumDropDown_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (DropDownList1.SelectedValue == "TextBox")
        {

            int j;
            i = int.Parse(NumDropDown.SelectedValue);
            Session["i"] = i;
            switch (i)
            {
                case 1:
                    t = new TextBox[i];
                    Session["textBox"] = t;
                    for (j = 0; j < i; j++)
                    {
                        t[j] = new TextBox();
                        t[j].ID = "txtCheckbox" + j.ToString();
                        Panel1.Controls.Add(t[j]);

                    }
                    break;
                case 2:
                    t = new TextBox[i];
                    Session["textBox"] = t;
                    for (j = 0; j < i; j++)
                    {
                        t[j] = new TextBox();
                        t[j].ID = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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