Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 为什么我的[HttpPost]方法没有启动?_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 3 为什么我的[HttpPost]方法没有启动?

Asp.net mvc 3 为什么我的[HttpPost]方法没有启动?,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我在MVC3.0 Razor视图中创建了一个页面。 Create.cshtml @model LiveTest.Business.Models.QuestionsModel @*<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.valida

我在MVC3.0 Razor视图中创建了一个页面。 Create.cshtml

@model LiveTest.Business.Models.QuestionsModel
@*<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>*@
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <table cellpadding="1" cellspacing="1" border="0">
        <tr>
            <td>@Html.LabelFor(model => model.TestID)
            </td>
            <td>
                @Html.DropDownListFor(model => model.TestID, (IEnumerable<SelectListItem>)ViewBag.ItemIDList)@Html.ValidationMessageFor(model => model.TestID)
            </td>
        </tr>
        <tr>
            <td>@Html.LabelFor(model => model.Question)
            </td>
            <td>@Html.EditorFor(model => model.Question)@Html.ValidationMessageFor(model => model.Question)
                @Html.HiddenFor(model => model.QuestionsID)
            </td>
        </tr>
        <tr>
            <td>@Html.LabelFor(model => model.IsRequired)
            </td>
            <td>@Html.CheckBoxFor(model => model.IsRequired)@Html.ValidationMessageFor(model => model.IsRequired)
            </td>
        </tr>
        <tr>
            <td> 
            </td>
            <td>
                <input type="submit" value="Submit" />
            </td>
        </tr>
    </table>
}
问题:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

如果我在Create.cshtml页面中添加上述两行,然后按下submit按钮,那么如果我在*Question字段中输入值,然后按下submit按钮,则将触发验证消息“Question is required!”,我的
[HttpPost]Create
方法将永远不会执行*

如果我从页面中删除上述两行,然后按提交按钮,它将执行
[HttpPost]创建
方法,并从服务器端启动验证。如果我在问题字段中输入值,则还将执行
[HttpPost]创建


请帮助我。

我会检查在尝试提交表单时是否出现任何客户端错误。从浏览器控制台进行检查


另外,在提交表单之前,请确保您已完成代码且没有验证错误。

我将检查在尝试提交表单时是否出现任何客户端错误。从浏览器控制台进行检查


另外,在提交表单之前,请确保您已完成代码,没有验证错误。

您是说表单不会验证客户端,并且不会将任何内容发送回服务器

也就是说,单击“提交”按钮,浏览器中不会发生任何事情,对吗


问题可能是您的表单没有使用不引人注目的javascript库验证进行验证。

您是说表单没有验证客户端,并且没有任何内容被发送回服务器

也就是说,单击“提交”按钮,浏览器中不会发生任何事情,对吗


问题可能是您的表单没有使用不引人注目的javascript库验证进行验证。

问题模型类包含一个属性
CreatedBy
,该属性未包含在您的视图中

尝试将
CreatedBy
添加为隐藏字段,或者(更好地)从QuestionsModel类中删除
CreatedBy
,因为它不是应该在视图中公开的属性

我怀疑这件丢失的财产是问题的原因

更新

我对您的代码运行了一些测试,它不是
CreatedBy
属性。相反,您的问题是您没有提供
QuestionsID
值,而是在表单上包含了QuestionsID的隐藏字段

由于QuestionsID是一种值类型,因此默认情况下,
DataAnnotationsModelValidatorProvider
会向QuestionsID字段添加所需的验证器。由于该字段没有ValidationMessage,因此无法看到验证错误


您可以按照中的说明覆盖默认DataAnnotationsModelValidatorProvider的行为。

中的说明
QuestionsModel
类包含一个属性
CreatedBy
,该属性未包含在您的视图中

尝试将
CreatedBy
添加为隐藏字段,或者(更好地)从QuestionsModel类中删除
CreatedBy
,因为它不是应该在视图中公开的属性

我怀疑这件丢失的财产是问题的原因

更新

我对您的代码运行了一些测试,它不是
CreatedBy
属性。相反,您的问题是您没有提供
QuestionsID
值,而是在表单上包含了QuestionsID的隐藏字段

由于QuestionsID是一种值类型,因此默认情况下,
DataAnnotationsModelValidatorProvider
会向QuestionsID字段添加所需的验证器。由于该字段没有ValidationMessage,因此无法看到验证错误


您可以按照中的说明覆盖默认DataAnnotationsModelValidatorProvider的行为。

客户端无表单验证可正常工作,但如果我填写所有必填字段,然后按submit按钮,则不会收到回发。即使我在浏览器中也没有收到任何验证错误,客户端没有表单验证工作正常,但如果我填写所有必填字段,然后按提交按钮,则不会收到回发。即使我在浏览器中也没有收到任何验证错误,客户端没有表单验证工作正常,但如果我填写所有必填字段,然后按提交按钮,则不会收到回发。即使我在浏览器中也没有收到任何验证错误,客户端没有表单验证工作正常,但如果我填写所有必填字段,然后按提交按钮,则不会收到回发。即使我在browserno中没有收到任何验证错误,这也不是问题的原因,因为我有几个其他表单,其中包含一些我在视图中没有使用过的字段,但它仍在工作。不,这不是问题的原因,因为我有几个其他表单,其中包含一些我在视图中没有使用过的字段,但仍然有效正在工作。我可能有点过分,但您是否将jquery库作为核心?我在这里只看到了验证插件,但没有看到库。我可能有点不对劲,但你是否将jquery库作为核心?我在这里只看到验证插件,没有看到库。
public class QuestionsModel : IQuestionsModel
    {
        [ReadOnly(true)]
        public Guid QuestionsID { get; set; }

        [Required]
        [DisplayName("Question")]
        public string Question { get; set; }
        [DisplayName("Test ID")]
        public Guid TestID { get; set; }
        [DisplayName("Is Required")]
        public bool IsRequired { get; set; }
        [DisplayName("Created By")]
        public Guid CreatedBy { get; set; }
            }
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>