Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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
Javascript 模型数据未通过表单传播到控制器ASP.NET MVC4_Javascript_C#_Asp.net Mvc 4 - Fatal编程技术网

Javascript 模型数据未通过表单传播到控制器ASP.NET MVC4

Javascript 模型数据未通过表单传播到控制器ASP.NET MVC4,javascript,c#,asp.net-mvc-4,Javascript,C#,Asp.net Mvc 4,我是ASP.NETMVC框架的新手,正在学习一门课程,以使自己能够快速掌握它。在这样做的过程中,我正在进行一个涵盖所有重要内容的项目,现在我遇到了问题: 我设置了一个页面,只需向客户端显示一些html内容,然后如果用户希望参与,他们可以单击按钮显示一个表单,然后使用该表单填写一些所需数据。以下是用于显示相应标记的javascript: <script> $(document).ready(function(){ $("#btnOneWayTrip").click(function (

我是ASP.NETMVC框架的新手,正在学习一门课程,以使自己能够快速掌握它。在这样做的过程中,我正在进行一个涵盖所有重要内容的项目,现在我遇到了问题:

我设置了一个页面,只需向客户端显示一些html内容,然后如果用户希望参与,他们可以单击按钮显示一个表单,然后使用该表单填写一些所需数据。以下是用于显示相应标记的javascript:

<script>
$(document).ready(function(){
$("#btnOneWayTrip").click(function () {
    $("#TripFromPlaceHoler").show();
});

$("#TripFromPlaceHoler").hide();
});
以下是我的测试模型,它被多次引用:

public class TestTripClass
{
    public string TripID { get; set; }
    public string StartPoint { get; set; }
    public string EndPoint { get; set; }
    public DateTime StartTime { get; set; }

}
当我填写表单并按下submit按钮时,当我调试并检查“CreateOneWayTrip”ActionResult的参数时,只有一个空白模型返回,如上面代码中所示,该参数称为“model”。为什么会这样?欢迎分享任何建议,因为我是MVC新手

作为概述,以下是我的.cshtml文件中的代码:

@model TransNex.Models.TestTripClass
@{
    ViewBag.Title = "Index";
}

<div class="row">
    <div class="col-lg-6" id="TripFromPlaceHoler">

        @using (Html.BeginForm("CreateOneWayTrip", "Trips"))
        {

            <fieldset>
                <legend>Create One Way Trip</legend>

                <div class="editor-label">
                    @Html.LabelFor(model => model.TripID)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.TripID)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.StartPoint)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.StartPoint)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.EndPoint)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.EndPoint)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.StartTime)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.StartTime)
                </div>

                <p>
                    <input type="submit" value="Create" />
                </p>
            </fieldset>
        }
    </div>
</div>

<script>
$(document).ready(function(){
    $("#btnOneWayTrip").click(function () {
        $("#TripFromPlaceHoler").show();
    });

    $("#TripFromPlaceHoler").hide();
});

</script>

ASP.NET MVC模型绑定器在反序列化复杂类型方面不是很好。 您可以通过不同的方式来实现这一点: 一种方法是在表单上有一个隐藏元素,其名称为模型中的mising属性。 另一种方法是采用与复杂模型绑定相关的可用方法之一,为此,请查看以下复杂模型绑定页面:
问题是从局部视图创建视图。如果您直接在根页面上移动htmls,而不使用部分,则submit按钮将填充您的模型类。

我找到了答案。不久前,通过在“共享”文件夹下创建“EditorTemplates”文件夹,为字符串值定义了自己的编辑器模板。该模板名为String.cshml,包含以下代码:


尝试更改参数名称。MVC有时会对这些事情感到困惑。现在就给它命名吧。看起来mvc无法反序列化您的模型。尝试用FormsCollection表单替换动作中的模型,看看它是否出现。@Frayt我更改了参数的名称,仍然没有骰子。@Aram使用FormCollection我必须知道控件的名称,Html.EditorFor生成的控件的名称是什么?你能发布它生成的网页的Html吗?
public class TestTripClass
{
    public string TripID { get; set; }
    public string StartPoint { get; set; }
    public string EndPoint { get; set; }
    public DateTime StartTime { get; set; }

}
@model TransNex.Models.TestTripClass
@{
    ViewBag.Title = "Index";
}

<div class="row">
    <div class="col-lg-6" id="TripFromPlaceHoler">

        @using (Html.BeginForm("CreateOneWayTrip", "Trips"))
        {

            <fieldset>
                <legend>Create One Way Trip</legend>

                <div class="editor-label">
                    @Html.LabelFor(model => model.TripID)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.TripID)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.StartPoint)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.StartPoint)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.EndPoint)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.EndPoint)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.StartTime)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.StartTime)
                </div>

                <p>
                    <input type="submit" value="Create" />
                </p>
            </fieldset>
        }
    </div>
</div>

<script>
$(document).ready(function(){
    $("#btnOneWayTrip").click(function () {
        $("#TripFromPlaceHoler").show();
    });

    $("#TripFromPlaceHoler").hide();
});

</script>