3

我的 MVC 应用程序中有一个奇怪的问题。

当用户从下拉列表中选择日期时,它会清除StartDateEndDate字段。

我有以下代码片段:

    <label>Start date: @Model.StartDate</label>
    @Html.TextBoxFor(s => s.StartDate)

奇怪的是,您可以在标签中输出它的位置找到日期。文本框未填充。

我检查了生成的标记并且没有填充文本框。

    <label>Start date: 19/05/2013</label>
    <input id="StartDate" name="StartDate" type="text" value="" />        <br />

我在这里想念什么?

要添加更多信息,最初填充页面时会输出默认的开始日期和结束日期。当 a<select>更改时,有一些 jQuery 会清空这些字段。如果我注释掉那一点,那么这些字段将保留它们以前的值,而不是空白。本质上,提交给服务器的任何内容都是输出而不是模型中的值。

4

3 回答 3

2

本质上,提交给服务器的任何内容都是输出而不是模型中的值。

这种行为实际上是设计使然。这个想法通常是用户希望在文本框中看到他们提交给服务器的内容。

有关详细说明和解决方法,请参见此处。

于 2013-06-06T23:34:51.747 回答
0

认为您的模型是一个名为 What like this 的类:

  public class What
    {
        public string StartDate { get; set; }
    }

然后,认为你的应用程序是“MyApplication”,你需要添加到视图中,好像视图是强类型的:

@using MyApplication.Models;
@inherits System.Web.Mvc.WebViewPage<What>

那么我们应该按照你的期望运行

于 2013-05-29T21:27:26.560 回答
0

而不是这样做

   <label>Start date: @Model.StartDate</label>
    @Html.TextBoxFor(s => s.StartDate)

你应该做这个

   <label id="someId"></label>
    @Html.TextBoxFor(s => s.StartDate,new{@id="startdate"})

并在您的文本框上使用 jquery on change 事件,您可以设置 labell

$("#startdate").change(function(){
var date="Start Date:"+$(this).val();
$("#someid").html(date);
});
于 2013-05-29T06:34:10.330 回答