По моему опыту, наилучшим способом центрировать ящик горизонтально является применение следующих свойств:
text-align: center;
display: inline-block;
.container {
width: 100%;
height: 120px;
background: #CCC;
text-align: center;
}
.centered-content {
display: inline-block;
background: #FFF;
padding: 20px;
border: 1px solid #000;
}
Center this!
См. также этот Fiddle !
По моему опыту, лучший способ центрировать коробку как вертикально, так и горизонтально - использовать дополнительный контейнер и применять следующие свойства:
display: table;
display: table-cell;
vertical-align: middle;
text-align: center;
display: inline-block;
.outer-container {
display: table;
width: 100%;
height: 120px;
background: #CCC;
}
.inner-container {
display: table-cell;
vertical-align: middle;
text-align: center;
}
.centered-content {
display: inline-block;
background: #FFF;
padding: 20px;
border: 1px solid #000;
}
Center this!
См. также этот скрипт !
DefaultModelBinder
не устанавливает значение полей, а только свойства. Вам нужно изменить модель, чтобы включить свойства
public class LetterViewModel
{
public string LetterText { get; set; } // add getter/setter
}
Вам нужно добавить [FromBody] перед параметром в действие
blockquote>[HttpPost] public ActionResult Index([FromBody]LetterViewModel model) { //model.LetterText == null return View(model); }
Вы также можете использовать настраиваемое связующее вместо связующего по умолчанию в случаях, когда у вас нет возможности конвертировать поля в свойства.
Прокрутите входные данные формы и установите их с помощью отражения. MemberInformation
- это мой класс, но вы можете просто использовать FieldInfo
.
Это не делает граф объектов, но если мне нужна эта способность, я усилю свой ответ. Кортеж в foreach
использует c # 7.0. Он также предполагает, что вы сохранили свой объект из предыдущего GET
до этого POST
.
using CommonBusinessModel.Metadata;
using GHCOMvc.Controllers;
using System;
using System.Linq;
using System.Web.Mvc;
namespace AtlasMvcWebsite.Binders
{
public class FieldModelBinder : DefaultModelBinder
{
// this runs before any filters (except auth filters)
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var form = controllerContext.HttpContext.Request.Form;
Type type = typeof(GHCOBusinessModel.GHCOPPAType);
AtlasKernelBusinessModel.VersionedObject instance = PolicyController.Policy;
foreach ((var value, var member) in (from string input in form
let fi = type.GetField(input)
where fi != null
let mi = new MemberInformation(fi, instance)
where !mi.ReadOnly
select (form[input], mi)))
member.SetValue(value);
return instance;
}
}
}