Mam dziwny problem i frustruje mnie to przez ostatnie kilka godzin. Nie mogę znaleźć niczego powiązanego; być może nie jestem wystarczająco dokładny, ponieważ nie jestem pewien, jak poprawnie go sformułować, lub jest to dziwnie wyjątkowy problem.Ten obszar tekstowy o wartości zerowej
Istnieje formularz wypełniany przez użytkownika w celu zaktualizowania informacji o koncie, wszystko działa tak, jak powinno, z wyjątkiem jednego obszaru tekstowego. Ta część tekstu "(która jest powiązana z właściwością Comments
z UserInfo
) staje się pusta, gdy formularz zostanie POSTed. Właściwość Comments
jest jedyną właściwością, która ma wartość NULL.
gdy występuje
a) nie istniejąca wartość, użytkownik wprowadza wartość, właściwość ma wartość null.
B) Istniejąca wartość, użytkownik robi/nie zmienia czegoś/niczego, właściwość ma wartość NULL.
Załączam tylko odpowiedni kod, aby zachować porządek i prostotę. Mam nadzieję, że to wystarczy.
Controller Operacje
public ActionResult Edit_Information(long id)
{
// Get user info from the database.
// Return the view with the user info from the DB etc.
}
[HttpPost]
public ActionResult Edit_Information(long id, UserInfo userInfo)
{
if (!this.ModelState.IsValid)
{
// Invalid
return View(userInfo);
}
// Update the information in the DB.
// Redirect the user back to their account.
}
Razor widoku HTML
<div style="width: 700px; margin-left: auto; margin-right: auto; text-align: left">
@Html.ValidationMessageFor(x => x.Comments)
</div>
@Html.Partial("~/Views/Shared/_EditorSmiles.cshtml")
@Html.TextAreaFor(x => x.Comments, new { @class = "EditorArea profile-comments" })
UserInfo
model
[Validator(typeof(UserInfoValidator))]
public class UserInfo
{
public string Comments { get;set; }
}
Tak, używam FluentValidation na modelu. Usunąłem go, żeby sprawdzić, czy to była przyczyna, ale tak nie było.
miejsca Próbowałem
- Na działania POST, Użyłem
FormCollection formCollection
zamiastUserInfo userInfo
. - Zarzucił wyjątek w akcji POST, aby udowodnić, że wartość zostanie opublikowana.
- Utworzono nową właściwość o innej nazwie.
- Ręcznie nadał właściwość wartość przed zwróceniem widoku. Wartość ta stała się pusta po opublikowaniu.
- Ręcznie przekazał właściwość wartość w akcji POST, aby udowodnić, że nie jest to DB ani SQL. To zadziałało.
- Usunięto atrybut Fluent Validation z modelu (jak wspomniano powyżej).
- Używany
[Bind(Prefix = "")]
przedUserInfo userInfo
. To nic nie zmieniło.
To frustruje mnie do punktu, w którym muszę zapytać: co do cholery idzie? czy robię coś źle? Muszę coś przeoczyć. Na stronie znajduje się inny obszar tekstowy, który działa tak, jak powinien. To tylko obszar tekstowy dla Comments
, który zawsze zwraca wartości null niezależnie od warunków.
Wyjmij typ UserInfo - wystarczy podać parametr komentarza. Czy jest zaludniony? Czy komentarze w formularzu (i widzisz je w Fiddler)? –
Gotowe. Komentarze istnieją w formularzu (przynajmniej zakładam, że tak). Wciąż jest zero. Nie znam się na Fiddler, w rzeczywistości nigdy o nim nie słyszałem. –
Może to bardzo głupie pytanie, ale czy na pewno część "komentarze", którą tu zamieściłeś, jest zawarta w prawidłowym tagu formularza? A może masz na myśli kolizję nazwy? – Iridio