TextBoxFor生成一个空白字段

时间:2013-05-29 06:14:08

标签: asp.net asp.net-mvc

我的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 />

我在这里缺少什么?

要添加更多信息,最初填充页面时,将输出默认的开始和结束日期。当<select>发生变化时,有一些jQuery会清空这些字段。如果我对该位进行评论,则字段将保留其先前的值而不是空白。基本上,提交给服务器的是输出而不是模型中的值。

3 个答案:

答案 0 :(得分:2)

  

基本上,提交给服务器的是输出而不是模型中的值。

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

有关详细说明和解决方法,请参阅here

答案 1 :(得分: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更改事件,您可以设置lablel

$("#startdate").change(function(){
var date="Start Date:"+$(this).val();
$("#someid").html(date);
});

答案 2 :(得分:0)

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

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

然后,假设您的应用程序是“MyApplication”,您需要添加到视图中,就好像视图是强类型的那样:

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

然后我们应该按照您的预期运行