Вы переименовали обязательное поле вашей модели в txt ....
Фреймворк отображает html-поля по имени в свойствах вашего класса, так как в вашем классе нет txtFirstName, он не может автоматически отобразить их. (поскольку имя поля html и имя свойства модели должны совпадать для привязки)
если вы сделаете следующее, он будет привязан правильно
<%=Html.TextBoxFor(model => Model.FirstName)%>
[HttpPost]
public ActionResult Edit(ClsUser myObject)
{
var x = myObject.FirstName; // this will now have a value
}
Если вы хотите использовать переименованное поле, т. Е. {Id = "txtFirstName"}, то вы можете создать новый класс и привязать к нему, как в:
public class ClsUserReturn
{
public string txtFirstName{get;set;}
}
и в вашем контроллере
[HttpPost]
public ActionResult Edit(ClsUserReturn myObject)
{
var x = myObject.txtFirstName; // this will now have a value
}
или
Вы можете пойти дальше и определить пользовательское связующее, чтобы удалить txt или другие префиксы / s, если ваши стандарты имен требуют, чтобы вы использовали определенные префиксы txt / cbo / chk и т. Д.