2013-05-29 5 views
3

У меня есть странная проблема в моем приложении MVC.TextBoxДля создания пустого поля

Когда пользователь выбирает дату из раскрывающегося списка, он очищает поля StartDate и EndDate.

У меня есть следующий фрагмент кода:

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

Что мне здесь не хватает?

Чтобы добавить немного больше информации, когда страница изначально заполнена, выводятся начальная и конечная даты по умолчанию. Существует немного jQuery, который опустошает эти поля при изменении <select>. Если я прокомментирую этот бит, тогда поля сохраняют свои предыдущие значения, а не пустые. По существу, все, что отправлено на сервер, выводится, а не значение в модели.

+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> 

Тогда все мы должны работать, как вы ожидаете

Смежные вопросы