小编zoa*_*oaz的帖子

在Entity Framework Core中选择多个嵌套级别的子表

我想使用急切加载在Entity Framework Core中获得多个嵌套级别的子表.我不认为延迟加载已经实现.

我找到了EF6 的答案.

var company = context.Companies
                 .Include(co => co.Employees.Select(emp => emp.Employee_Car))
                 .Include(co => co.Employees.Select(emp => emp.Employee_Country))
                 .FirstOrDefault(co => co.companyID == companyID);
Run Code Online (Sandbox Code Playgroud)

我的问题是Select在EF Core中无法识别

错误CS1061"Employees"不包含"Select"的定义,也没有扩展方法"Select"接受类型为"Employees"的第一个参数(您是否缺少using指令或程序集引用?)

我包含的命名空间:

using MyProject.Models;
using Microsoft.Data.Entity;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
Run Code Online (Sandbox Code Playgroud)

Select在EF Core中有什么替代方案.

entity-framework-core

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

将IHtmlContent/TagBuilder转换为C#中的字符串

我正在使用ASP.NET 5.我需要将IHtmlContent转换为String

IIHtmlContentASP.NET 5 Microsoft.AspNet.Html.Abstractions命名空间的一部分,是一个TagBuilder实现的接口

简化我有以下方法

public static IHtmlContent GetContent()
{
    return new HtmlString("<tag>blah</tag>");
}
Run Code Online (Sandbox Code Playgroud)

当我参考它

string output = GetContent().ToString();
Run Code Online (Sandbox Code Playgroud)

我得到GetContent()的以下输出

"Microsoft.AspNet.Mvc.Rendering.TagBuilder" 
Run Code Online (Sandbox Code Playgroud)

并不是

<tag>blah</tag>
Run Code Online (Sandbox Code Playgroud)

我想要的

我也尝试过使用StringBuilder

StringBuilder html = new StringBuilder();
html.Append(GetContent());
Run Code Online (Sandbox Code Playgroud)

但它也附加相同的命名空间而不是字符串值

我试着把它投射到TagBuilder

TagBuilder content = (TagBuilder)GetContent();
Run Code Online (Sandbox Code Playgroud)

但TagBuilder没有转换为字符串的方法

如何将IHtmlContent或TagBuilder转换为字符串?

c# asp.net asp.net-core-mvc asp.net-core

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

RenderPartialAsync返回System.Threading.Tasks.Task`1 [System.Threading.Tasks.VoidTaskResult]

我正在使用ASP.NET 5 RC1

_MyPartial

@model MyViewModel

<div class="panel panel-primary">
    <div class="panel-body">

        @using (Html.BeginForm())
            {
            @Html.AntiForgeryToken()

            <div class="form-horizontal">
                @Html.ValidationSummary(true)
                @Html.MyHtmlHelperRow(model => model.ShortDistrictName)
                @Html.MyHtmlHelperRowSaveButton(model => model.Id)
            </div>
        }
    </div>
</div>
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
Run Code Online (Sandbox Code Playgroud)

cshtml 视图

@model MyViewModel

@{
    ViewBag.Title = "Edit";
}

<h2>@ViewBag.Title</h2>


@Html.RenderPartialAsync("_MyPartial", Model)

@section Scripts {
    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
}
Run Code Online (Sandbox Code Playgroud)

这条线

@Html.RenderPartialAsync("_MyPartial", Model)
Run Code Online (Sandbox Code Playgroud)

除了渲染html,呈现

 System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]
Run Code Online (Sandbox Code Playgroud)

html中的文本直接位于部分页面呈现的最后一个内容的下方.

如果我将部分行引用更改为非异步

@Html.Partial("_MyPartial", Model)
Run Code Online (Sandbox Code Playgroud)

然后我没有得到这个文本行.

问题:

  1. 为什么我在html中获得文本行

  2. 我如何摆脱它仍然能够使用RenderPartialAsync?

asp.net-core-mvc asp.net-core

16
推荐指数
2
解决办法
7465
查看次数

ASP.NET 5 MVC6中的@ Ajax.ActionLink

我正在使用ASP.NET 5 RC1.

什么是相当ASP.NET 5 MVC 6@Ajax.ActionLink

例:

@Ajax.ActionLink("Show", 
             "Show", 
             null, 
             new AjaxOptions { HttpMethod = "GET", 
             InsertionMode = InsertionMode.Replace, 
             UpdateTargetId = "dialog_window_id", 
             OnComplete = "your_js_function();" })
Run Code Online (Sandbox Code Playgroud)

用于ASP.NET 4 MVC 5.

我明白了:

当前上下文中不存在名称"Ajax".

ASP.NET 5

更新:

我明白它不会被实施.是否有人可以为我提供taghelper代码示例替代方案?

asp.net-core-mvc asp.net-core

10
推荐指数
2
解决办法
6558
查看次数

如何编写包含其他标记帮助程序的自定义ASP.NET 5标记帮助程序

我一直在谷歌上看标签上的例子,但找不到我正在寻找的任何例子.

我有以下代码:

<div class="form-group">
    <label asp-for="PersonName" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="PersonName" class="form-control" />
        <span asp-validation-for="PersonName" class="text-danger"></span>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我要做的是用类似的东西替换它

<bootstraprow asp-for="PersonName"></bootstraprow>
Run Code Online (Sandbox Code Playgroud)

但是,我不确定要编写包含其他标记的taghelper

  1. 可能吗?
  2. 如果可能的话,提供上面的代码示例

编辑:这与在自定义标记中存储变量不同,但我想调用其他自定义标记或现有标记.

asp.net-core-mvc tag-helpers asp.net-core

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

ASP.NET MVC6脚手架在BETA 8中不起作用

我正在使用ASP.NET Beta 8试图让脚手架工作,但它遇到了Microsoft.Framework.CodeGeneration的问题

我的 project.json

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "ef": "EntityFramework.Commands",
    "gen": "Microsoft.Framework.CodeGeneration"
  },
Run Code Online (Sandbox Code Playgroud)

命令:

dnx gen controller -Name ModelClassName--datacontext MyDbContext --model ModelClassName
Run Code Online (Sandbox Code Playgroud)

错误:

dnx : Error: Unable to load application or execute command 'Microsoft.Framework.CodeGeneration'. Available commands: web, ef, gen.
Run Code Online (Sandbox Code Playgroud)

此软件包在Nuget上,但尚未针对Beta 8进行更新.

只有版本是Beta 5. Link

当我安装这个Beta 5软件包时

安装包Microsoft.Framework.CodeGeneration -Pre

并运行相同的脚手架命令我得到错误:

无法解析"Microsoft.Framework.Runtime.ILibraryManager"类型的服务

这让我觉得脚手架在Beta 8中不起作用.

asp.net-core-mvc asp.net-core

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

无法将'TEnum'类型转换为'int'

我正在尝试将枚举转换为List,如例所示,例如

Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Select(v => new SelectListItem {
    Text = v.ToString(),
    Value = ((int)v).ToString()
}).ToList();
Run Code Online (Sandbox Code Playgroud)

这项工作,但我想修改它以使用通用枚举

public static List<SelectListItem> GetEnumList<TEnum>(TEnum value)
{

        return Enum.GetValues(typeof(TEnum)).Cast<TEnum>().Select(v => new SelectListItem
        {
            Text = v.ToString(),
            Value = ((int)v).ToString()
        }).ToList();
 }
Run Code Online (Sandbox Code Playgroud)

但是上面的代码没有编译和给出

无法将'TEnum'类型转换为'int'

为线

  Value = ((int)v).ToString()
Run Code Online (Sandbox Code Playgroud)
  1. 我如何修复上面的代码.

  2. 为什么它使用泛型枚举而不是普通枚举给出编译错误


编辑:我已经尝试了线程中的建议,但我得到了进一步的错误:

这是我的完整代码:

public static IHtmlContent EnumDropDownListFor<TModel, TResult,TEnum>(
    this IHtmlHelper<TModel> htmlHelper,
    Expression<Func<TModel, TResult>> expression,
    TEnum enumValue,
    string optionLabel) 
{
    return htmlHelper.DropDownListFor(expression, (IEnumerable<SelectListItem>)GetEnumList(enumValue), optionLabel);
}

public static List<SelectListItem> GetEnumList<TEnum>(TEnum value) 
{
    return Enum.GetValues(typeof(TEnum)).Cast<TEnum>().Select(v => new SelectListItem
    {
        Text …
Run Code Online (Sandbox Code Playgroud)

c# linq enums

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