小编Daa*_*ath的帖子

获取MVC模型数据并将其传递给AngularJS控制器

我对AngularJS很新,我在这里不知所措.

现在我的MVC程序使用Razor显示我的.mdf数据库中的所有数据(即:@ Html.DisplayFor(modelItem => item.LastName)).但是,我想主要是Angular.我正在尝试使用ng-repeat来显示所有Model数据,但我不确定如何将该Model数据传递给Angular控制器然后使用它.我已经尝试在我的ng-init中将Model序列化为JSON,但我认为我做得不对(显然).

这是我的代码:

// controller-test.js

var myApp = angular.module('myModule', []);

myApp.controller('myController', function ($scope) {
    $scope.init = function (firstname) {
        $scope.firstname = firstname;
    }
});
Run Code Online (Sandbox Code Playgroud)
<!-- Index.cshtml -->

@model IEnumerable<Test.Models.Employee>

@{
    ViewBag.Title = "Index";
}

<div ng-app="myModule">
    <div ng-controller="myController" ng-init="init(@Newtonsoft.Json.JsonConvert.SerializeObject(Model))">
         <table>
             <tr ng-repeat= <!--THIS IS WHERE I'M STUCK -->
         </table>
    </div>
</div>

<script src="~/Scripts/angular.min.js"></script>
<script src="~/Scripts/controller-test.js"></script>
@Scripts.Render("~/Scripts/angular.js")
Run Code Online (Sandbox Code Playgroud)

我不确定我应该重复从序列化模型中获取FirstName.我觉得我有所有的部分,但只是不确定如何连接它们.

javascript asp.net-mvc razor angularjs asp.net-mvc-5

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

在.NET Core 1.0 MVC中的视图中使用授权策略的任何方法?

我知道在控制器中,您可以[Authorize("policyName")]毫无问题地编写,但有没有办法在视图中使用策略?我不想User.IsInRole(...)每次都想要授权一些HTML.

编辑:

这是一些代码

Startup.cs - 政策声明

    services.AddAuthorization(options =>
    {
        options.AddPolicy("testPolicy", policy =>
        {
            policy.RequireAuthenticatedUser()
                  .RequireRole("RoleOne", "RoleTwo", "RoleThree")
                  .RequireClaim(ClaimTypes.Email);
        });
    });
Run Code Online (Sandbox Code Playgroud)

管理控制器

[Authorize("testPolicy")]
public class AdminController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

导航HTML

<div class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li><a asp-controller="Home" asp-action="Index">Home</a></li> 

                        <!-- I want to implement my policy here. -->
                        @if (User.IsInRole("..."))
                        {
                            <li><a asp-controller="Admin" asp-action="Index">Admin</a></li>
                        }
                    </ul>
                    @await Html.PartialAsync("_LoginPartial")
                </div>
            </div>
Run Code Online (Sandbox Code Playgroud)

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

17
推荐指数
2
解决办法
6128
查看次数

在ASP.NET Core MVC中等效于"@section"?

在默认_Layout.cshtml文件中,脚本在"环境"中定义如下:

<environment names="Development">
     <script src="~/lib/jquery/dist/jquery.js"></script>
     <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
     <script src="~/js/site.js" asp-append-version="true"></script>
</environment>
<environment names="Staging,Production">
     <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"
                    asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                    asp-fallback-test="window.jQuery">
     </script>
     <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.5/bootstrap.min.js"
                    asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
                    asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
     </script>
     <script src="~/js/site.min.js" asp-append-version="true"></script>
</environment>
Run Code Online (Sandbox Code Playgroud)

而在下面就是这样 @RenderSection("scripts", required: false)

我似乎无法在任何单独的.cshtml文件中实现一个部分(在本例中为"scripts"),因为它看起来像是@section在Core中摆脱了" "

我想为特定视图添加特定脚本.什么是新的方式去做?我_Layout现在暂时抛弃一切吗?

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

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

如何使用Razor和.NET Core将项添加到ViewModel的列表中?

所以这是我的情况.

假设我有一个名为TheView.cshtml. TheView.cshtmlViewModel的视图TheViewModel.cs.在TheViewModel.cs,驻留一个TheObject被调用的对象()的列表TheObjectList.

我有一个TheObject被调用的编辑器模板TheObject.cshtml.使用此编辑器模板,我可以简单地显示TheObjectListwith 中的所有项目@Html.EditorFor(model => model.TheObjectList).

但是,现在我想动态地将对象添加到此列表中.我有一个AJAX函数,它调用一个简单的局部视图来给用户一个空白行来添加一个新的" TheObject",但是,TheObject我动态添加的任何新函数都不被认为是原始的一部分TheObjectList.

这是因为原始中的每个项目TheObjectList都是根据原始列表中的索引创建的,而每个新的动态TheObject都是在没有前缀的情况下创建的,因此Razor不会将其视为列表的一部分.

有没有解决的办法?

TheView.cshtml

@model Models.ViewModels.TheViewModel

<table id="Table">
    <tbody>
        @Html.EditorFor(m => m.TheObjectList);
    </tbody>
</table>

<button id="AddObject" type="button" class="btn btn-primary">Add Object</button>
Run Code Online (Sandbox Code Playgroud)

TheViewModel.cs

public class TheViewModel
{
    public List<TheObject> TheObjectList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

AddObject控制器方法

public IActionResult AddObject()
{
   return PartialView("_EmptyRow", new TheObject());
}
Run Code Online (Sandbox Code Playgroud)

添加对象的AJAX方法

$('#AddObject').click(function () { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc viewmodel razor asp.net-mvc-4

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

如何在ASP.NET Core 1.0中为Web应用程序显示LoggerFactory日志控制台?

所以我在Startup.cs默认情况下有这个:

loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
Run Code Online (Sandbox Code Playgroud)

如何查看loggerFactory正在添加的控制台?我可以在Debug输出窗口中看到日志信息,但它与其他自动调试信息非常混乱,很难找到.

有没有办法查看记录器控制台,或者如果没有,显示只有我登录输出的信息的方法?

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

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

单选按钮上的模型绑定为该属性返回null(ASP.NET Core)

所以我有四个单选按钮绑定到我的模型属性之一,所有属性都具有不同的值.但是,当表单提交时,该属性返回null(而其他所有内容都返回正确).码:

<div id="RadioButtonGroup">
    <label asp-for="Object.PropertyOne" class="radio-inline">
         <input asp-for="Object.PropertyOne" value="A"  type="radio" name="optradio" >Option One
    </label>
    <label asp-for="Object.PropertyOne" class="radio-inline">
         <input asp-for="Object.PropertyOne" value="B"  type="radio" name="optradio" >Option Two
    </label>
    <label asp-for="Object.PropertyOne" class="radio-inline">
         <input asp-for="Object.PropertyOne" value="C"  type="radio" name="optradio" >Option Three
    </label>
     <label asp-for="Object.PropertyOne" class="radio-inline">
         <input asp-for="Object.PropertyOne" value="D"  type="radio" name="optradio" >Option Four
    </label>
</div>
Run Code Online (Sandbox Code Playgroud)

我选择一个,提交表单,然后Object.PropertyOne返回null.但是,如果我Object.PropertyOne在ViewModel中手动设置,它会正确显示.我错过了什么?

c# asp.net model-binding razor asp.net-core

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

如何获取materializecss复选框以使用@ Html.CheckBoxFor?

所以我在尝试用@ Html.CheckBoxFor实现materializecss'复选框时遇到了问题.如果我完全输入:

<input type="checkbox" id="test5" />
<label for="test5">Red</label>
Run Code Online (Sandbox Code Playgroud)

有用.但如果我试试这个:

@Html.LabelFor(m => m.RememberMe, new { @class = "login-label" })
@Html.CheckBoxFor(m => m.RememberMe, new { @type = "checkbox" })
Run Code Online (Sandbox Code Playgroud)

复选框从页面左侧消失(复选框的样式左侧设置为-99999).

有没有其他方法可以实现CheckBoxFor,这将使materialise合作?

html5 material materialize razor material-design

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

在 ASP.NET Core 中搭建现有数据库 (Scaffold-DbContext)

现在,(据我所知)搭建数据库的唯一方法是通过以下命令: Scaffold-DbContext .....

这不会构建没有主键或视图的表,并且如果您的代码中存在任何错误,则不会运行。另外,我相信为了更新一张表,你必须再次搭建整个数据库(如果我错了,请纠正我)

我们会在过去的 ASP.NET 版本中看到类似 .edmx 文件的内容吗?带有 GUI 的东西还是不太容易出错的东西?

有没有其他方法可以做到我错过了?

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

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

在ASP.NET Core 1.0中发布后修改appsettings.Production.json文件?

我有一个非常直截了当的问题.

在我的project.json文件中,我在"发布"部分的"appsettings.json"之后添加了"appsettings.Production.json".这非常有效,Production会按预期覆盖原始值.

但是,我的问题是:我是否可以在使用文本编辑器发布项目修改Production json文件?我显然试过这样做但它不起作用,所以也许有些东西我不见了?或者,如果我想对任何json文件进行任何更改,是否还需要重新发布整个项目?

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

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

将 SessionStore (ITicketStore) 添加到我的应用程序 cookie 会使我的数据保护提供程序无法工作

tl;博士

  • 拥有 .NET Core 2.0 应用程序,该应用程序使用数据保护提供程序,该提供程序在我的域中的所有站点中保留一个密钥文件。
  • 工作正常,但是,应用程序 cookie 变得太大了。
  • 使用 ITicketStore 在 cookie 上实现了一个 SessionStore
  • Cookie 大小大大减少,但是,来自 DPP 的密钥不再在我的站点中持续存在。

我应该在我的 ITicketStore 实现中做些什么来解决这个问题?我假设是这样,因为这是出现问题的地方,但是,我无法弄清楚。

一些片段:


Startup.cs --> ConfigureServices()

var keysFolder = $@"c:\temp\_WebAppKeys\{_env.EnvironmentName.ToLower()}";
var protectionProvider = DataProtectionProvider.Create(new DirectoryInfo(keysFolder));
var dataProtector = protectionProvider.CreateProtector(
            "Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware",
            "Cookies",
            "v2");

--snip--

services.AddSingleton<ITicketStore, TicketStore>();

--snip--

services.AddDataProtection()
    .PersistKeysToFileSystem(new DirectoryInfo(keysFolder))
    .SetApplicationName("app_auth");

services.ConfigureApplicationCookie(options =>
{
    options.Cookie.Name = ".XAUTH";
    options.Cookie.Domain = ".domain.com";
    options.ExpireTimeSpan = TimeSpan.FromDays(7);
    options.LoginPath = "/Account/Login";
    options.DataProtectionProvider = protectionProvider;
    options.TicketDataFormat = new TicketDataFormat(dataProtector);
    options.CookieManager = new ChunkingCookieManager();
    options.SessionStore = services.BuildServiceProvider().GetService<ITicketStore>();
}); …
Run Code Online (Sandbox Code Playgroud)

asp.net cookies asp.net-core asp.net-core-2.0

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

OAuth 2.0和Google Signin in .NET 5(核心版)?

我在网上找不到任何模仿谷歌登录MVC 5及以下用于MVC 6的实现.是否支持?我正在使用OWIN,但它似乎现在已经过时了.任何人都可以如此善良,以我的方式扔一些链接或信息?我完全失去了.

asp.net oauth oauth-2.0 asp.net-core-mvc asp.net-core

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