标签: asp.net-core-mvc

EntityFrameworkCore:如何将具有外键的实体保存到另一个模型?

我有一个与另一个相关的模型:

public class Portfolio : BaseEntity, IEntityBase
    {
        public string Name { get; set; }
        public Org Organization { get; set; }
        public bool IsPrivate { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试保存它(将字段的值organization指向数据库中的现有记录)时,ModelState 无效(“组织”:输入无效)。

我将 的idOrganization其余的有效负载一起发送:

{
    "Name": "Port 1",
    "Organization": 16
}
Run Code Online (Sandbox Code Playgroud)

控制器代码非常简单:

[HttpPost]
public IActionResult Create([FromBody]Portfolio item){
     if (ModelState.IsValid){
         _PortfolioRepo.Add(item);
         _PortfolioRepo.Commit();
         return new OkObjectResult(item);
         }
     else{
        return BadRequest(ModelState);
     }
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我Organization在有效负载中指定字段时,item方法中的字段Create()将出现null,因此我无法Organization从其存储库中手动检索并链接到Portfolio其中任何一个字段。当我省略 时 …

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

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

带有表单标签的 ASP.NET Core - 验证表单 onsubmit 并阻止提交

我有一个 ASP.NET Core 2.0 项目,在其中使用表单标签进行提交。现在我想在表单提交中添加一些客户端验证。onsubmit所以我在表单上使用标签,如下所示:

<form id="formId" asp-action="ActionName" onsubmit="validationFunction(Event)">
Run Code Online (Sandbox Code Playgroud)

我有一个这样的函数:

function validationFunction(e) {
    //CheckStuff
    e.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)

现在,当我提交表单时,该函数会正确触发,但e.preventDefault()不会停止提交。也没有return false

如何阻止我的提交完成?

附言。我知道我可以通过单击按钮来处理这种情况,并在完成验证后提交表单,但我想知道为什么上述方法在 ASP.NET Core 中不起作用或者我缺少什么?

javascript c# form-submit asp.net-core-mvc asp.net-core-2.0

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

在 AddModelError 中添加指向另一个 Action 的链接

我有一个错误,我想添加一个链接

ModelState.AddModelError(string.Empty, "You must have a confirmed email to log in.");
Run Code Online (Sandbox Code Playgroud)

我想要做的是添加一个指向 SendEmailConfirmationMail 操作的链接,以便在丢失时我可以将其重新发送给他们。

[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> SendEmailConfirmationMail(string email, string returnUrl = null)
    {
  // Stuff removed
    }
Run Code Online (Sandbox Code Playgroud)

我尝试过的

ModelState.AddModelError(string.Empty, 
                         $"You must have a confirmed email to log in. Click to resend conformation email <a href=account/SendEmailConfirmationMail?Email={model.Email}&returnUrl={returnUrl}> resend</a>");
Run Code Online (Sandbox Code Playgroud)

ModelState.AddModelError(string.Empty, $"<a href=\"{Url.Action("SendEmailConfirmationMail", "Account", new { Email = model.Email, returnUrl = returnUrl })}\">Click me</a>");
Run Code Online (Sandbox Code Playgroud)

这效果不太好。

在此输入图像描述

如果我做错了,我愿意接受其他想法。我还在学习asp.net mvc。

从它的表现来看

 @if (error != null)
            {
                <strong>
                    <em> : @Html.Raw(error)</em>
                </strong>
            }
Run Code Online (Sandbox Code Playgroud)

更新: …

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

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

ViewComponent InvokeAsync 方法和非异步操作

在 ASP.NET Core 中,ViewComponent我们必须在InvokeAsync返回IViewComponentResult. async但是,我在调用方法内没有执行任何逻辑。因此,根据此处的帖子,我删除了async限定符并返回Task.FromResult

public Task<IViewComponentResult> InvokeAsync(MyBaseModel model)
{        
    var name = MyFactory.GetViewComponent(model.DocumentTypeID);        
    return Task.FromResult<IViewComponentResult>(View(name, model));
}
Run Code Online (Sandbox Code Playgroud)

然后在视图中(因为我没有,所以async我不在await这里使用)

@Component.InvokeAsync("MyViewComponent", new { model = Model })
Run Code Online (Sandbox Code Playgroud)

然而视图呈现这个:

System.Threading.Tasks.Task1[Microsoft.AspNetCore.Html.IHtmlContent]`

async-await asp.net-core-mvc asp.net-core asp.net-core-2.0

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

OnModelCreating 中的环境检查

我正在 ApplicationDbContext.cs 的 OnModelCreating 方法中播种数据。我想总是添加一些数据,但也有条件地添加一些数据(仅当环境是开发时)。

我怎样才能做到这一点?我无法将方法签名更改为具有“IHostingEnvironment env”,因为在这种情况下它不会覆盖 OnModelCreating。

protected override void OnModelCreating(ModelBuilder builder)
Run Code Online (Sandbox Code Playgroud)

谢谢!

seeding entity-framework-core asp.net-core-mvc

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

缺少值属性.net core mvc HiddenFor helper

由于某种原因,.NET Core (2.1.4) MVC 中的 HiddenFor 帮助程序没有在隐藏输入元素上设置值,尽管它表示的模型属性上存在值。

如果我手动创建隐藏属性并使用 IdFor、NameFor 并手动设置值,它将按预期工作。

    // This works and has a value attribute with a value
    <input type="hidden" id="@Html.IdFor(x => x.Fields[componentIndex].Value)" name="@Html.NameFor(x => x.Fields[componentIndex].Value)" value="@Model.Fields[componentIndex].Value"/>

    // This has a value attribute but it's empty
    @Html.HiddenFor(x => x.Fields[componentIndex].Value)
Run Code Online (Sandbox Code Playgroud)

请注意,在这两种情况下,生成的名称和 ID 是相同的。

如果我使用 HiddenFor 并提供 anew { @Value=... }值,它也不会设置。

设置值的 HiddenFor 之间的唯一区别(使用相同的代码但不同的组件索引)是它们是在发布时提供的,而这个有问题的值是在控制器中设置的。

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

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

如何在 Asp.net CORE MVC 的浏览器上下载 PDF 文件

我正在使用以下代码,用于以 pdf 格式下载 SSRS 报告:

 string URL = "http://ssrs-test.com/ReportS/?/UAT_FOLDER";
 URL = URL + "&SRNo=122&rs:Command=Render&rs:Format=pdf";

 System.Net.HttpWebRequest Req = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(URL);

 Req.Method = "GET";
 string path = @ "E:\New folder\Test.pdf";
 System.Net.WebResponse objResponse = Req.GetResponse();
 System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create);
 System.IO.Stream stream = objResponse.GetResponseStream();
 byte[] buf = new byte[1024];
 int len = stream.Read(buf, 0, 1024);

 while (len > 0) {
  fs.Write(buf, 0, len);
  len = stream.Read(buf, 0, 1024);
 }
 stream.Close();
 fs.Close();
Run Code Online (Sandbox Code Playgroud)

这完美地在指定的路径中创建了一个 pdf 文件E:\New folder\,我想要做的是:

我需要下载浏览器的,因为我们是在asp.net用在做Response.Write()Response.End()等。 …

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

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

Dapper 和 .net core 3

我是 .netcore 的新手,并尝试使用 dapper 进行一些数据库交互。dapper 不能与 .net core 3 一起使用吗?或者我做错了什么:X

我创建了一个新的.net项目:

dotnet new mvc
Run Code Online (Sandbox Code Playgroud)

尝试添加短小精悍

dotnet add package Dapper --version 2.0.30
Run Code Online (Sandbox Code Playgroud)

然后我得到错误:

info : Adding PackageReference for package 'Dapper' into project 
 C:\repos\dapper\dapper.csproj'.

info : Restoring packages for C:\repos\dapper\dapper.csproj...
error: Cycle detected.

error:   dapper -> Dapper (>= 2.0.30).

info : Package 'Dapper' is compatible with all the specified frameworks in project 'C:\repos\dapper\dapper.csproj'.

error: Value cannot be null. (Parameter 'path1')
Run Code Online (Sandbox Code Playgroud)

dapper asp.net-core-mvc

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

如何在 Asp.net Core 应用程序中创建文本文件

我是 Dot-net Core 应用程序的新手 如何在 Asp.net Core 应用程序中创建文本文件 请为我提供一些资源

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

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

在 Net Core 中使用 Microsoft Graph Api 将用户添加为组成员

在我的项目中,我在 Net Core 3.0 项目中使用 Microsoft Graph Api 连接到 Azure Intune 并添加组和用户。添加包含成员的组时,图形 API 需要用户的 json 表示,如下所示(文档):

var group = new Group
{
    // other properties omitted
    AdditionalData = new Dictionary<string, object>()
    {
        {"owners@odata.bind", "[\"https://graph.microsoft.com/v1.0/users/26be1845-4119-4801-a799-aea79d09f1a2\"]"},
        {"members@odata.bind", "[\"https://graph.microsoft.com/v1.0/users/ff7cb387-6688-423c-8188-3da9532a73cc\",\"https://graph.microsoft.com/v1.0/users/69456242-0067-49d3-ba96-9de6f2728e14\"]"}
    }
};
Run Code Online (Sandbox Code Playgroud)

简要编辑: 我从文档中尝试了上面的代码,用我想要添加的用户替换了 Guid,但这也不起作用,给我同样的错误消息。 结束编辑。

如何在字典中动态添加成员,例如从用户 ID 数组中添加成员?他们似乎使用转义字符,并且使用JsonConvert.SerializeObject(arrayObjectWithIds)似乎不起作用,因为我从 Graph Api 得到了一个格式不正确的 OData 字段:Invalid URL format specified in @odata.bind for members

我拥有的:

string[] memberIds = new string[] { "https://graph.microsoft.com/v1.0/users/123", "https://graph.microsoft.com/v1.0/users/456", "https://graph.microsoft.com/v1.0/users/789" };
string json = JsonConvert.SerializeObject(memberIds);

newGroup.AdditionalData = new …
Run Code Online (Sandbox Code Playgroud)

c# odata asp.net-core-mvc azure-ad-graph-api microsoft-graph-api

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