相关疑难解决方法(0)

Asp.NET MVC - 验证控制器之外的模型

我正在构建一个ASP.NET MVC项目,并采用以下架构:

  • 一个核心项目,包含模型,验证,dto,逻辑等.
  • 一个ServiceStack API项目,充当我的REST API
  • 作为UI 的ASP.NET MVC Web项目

所以,假设我想添加一个用户.我NewUserInputModelCore项目中定义了一个.我给它一些数据注释,如[Required].执行此操作后,Web项目将根据这些注释执行客户端验证.

我的问题是关于服务器端验证.我要验证的NewUserInputModel使用正在在客户端使用相同的规则,我想运行一个验证的天气NewUserInputModel从进来API网络项目.

我意识到我可以ModelState.IsValidWeb项目中的Controller 调用- 但是我想从Core项目中调用该验证,以便所有验证逻辑都存在于Core中.这样,无论这个模型如何进入Core逻辑,我总是调用相同的验证.我不想将System.Web引用泄漏到我的Core项目中.

这是一个合理的设计吗?我认为是 - 但如果有什么东西闻起来,我会很高兴听到它.

在此先感谢您的帮助.

validation asp.net-mvc-4

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

Asp.Net MVC表单,具有未知的Controller参数

我正在构建一个问卷mvc webapp,我无法弄清楚如何从表单中将未知数量的参数传递给控制器​​.

我的表格是这样的:

<% using (Html.BeginForm())
   { %>
<div id="Content">
    <% foreach (var group in ViewData.Model.QuestionGroups)
       { %>
    <div class="Group">
        <%=group.Description %>
        <% foreach (var question in group.Questions)
           {%>
        <div class="Question">
            <div class="QuestionTitle">
                <%=question.Title %>
            </div>
                <%=Html.Hidden("Id", question.ID) %>
            <div class="QuestionText">
                <%switch (question.TypeAsEnum)
                  {
                      case QuestionTypeEnum.Text:%>
                <%=Html.TextBox("somename") %>
                <% break;
                      case QuestionTypeEnum.Number:%>
                <%=Html.TextBox("somename") %>
                <% break;
                      case QuestionTypeEnum.PhoneNumber:%>
                <%=Html.TextBox("somename")%>
                <% break;
                      case QuestionTypeEnum.Email:%>
                <%=Html.TextBox("somename")%>
                <% break;
                      case QuestionTypeEnum.Date:%>
                <%=Html.TextBox("somename")%>
                <% break;
                      case QuestionTypeEnum.YesNo:%>
                <%=Html.RadioButton("somename", true)%>
                <%=Html.RadioButton("somename", false)%>
                <% break;
                      case …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

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

剃刀页面:继承模型以在创建过程中添加字段

这些实体在虚拟上相当于我要完成的工作(实际上更复杂)。

我只需要在创建Article(SendToSubscribers字段)时才需要在表单中显示其他字段,这些字段就不是实体本身的一部分。

public class Article {
    public string Title { get; set }
}

public class ArticleCreateForm : Article {
    public bool SendToSubscribers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在cshtml中,用于创建/更新:

@model Article
...
@if (string.IsNullOrEmpty(Model.Id))
{
    <admin-input asp-for="SendToSubscribers" />
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是我得到的错误:

'Article'不包含'SendToSubscribers'的定义,找不到可以接受的扩展方法'SendToSubscribers'接受类型为'Article'的第一个参数(您是否缺少using指令或程序集引用?)

如果方法根本不好,很抱歉,我来自PHP背景。

我猜这不是一个好的解决方案,那么我该如何纠正呢?谢谢。

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

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