2013-05-29 85 views
3

我在我的MVC应用程序中有一个奇怪的问题。TextBoxFor生成空白字段

当用户从下拉列表中选择日期时,它将清除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会清空这些字段。如果我评论这一点,那么这些字段保留其先前的值而不是空白。实质上,提交给服务器的任何内容都是输出,而不是模型中的值。

+0

你有一个类似的stackoverflow问题的解决方案http://stackoverflow.com/questions/1961114/date-only-from-textboxfor –

+0

不知道发生了什么事情。您的代码在我身边正常工作。该文本框正确填充。也许你需要添加更多的代码。 –

+0

@AlbertoLeón模型中的字段是字符串,无论如何。 – Sam

回答

2

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

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

请参阅here了解详细的解释和解决办法。

+0

感谢您的信息。 – Sam

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); 
}); 
0

都在想你的模型是一个名为这样的类:

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

然后,认为自己的应用是“为MyApplication”,你需要添加到视图如果视图stronglytyped:

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

然后,所有我们应该运行像您期望