О Боже! Я только что видел ваше опубликованное изображение снова, вы просто открываете свой php-файл в браузере. у вас есть open, использующий localhost url. если вы открываете файл непосредственно из своего каталога, он не будет выполнять php-код в любом случае.
use: http://locahost/index.php
или http:127.0.0.1/index.php
включить php-код в вашем случае , вы используете <?
, который является коротким кодом php для <?php
, по умолчанию короткие короткие коды php отключены.
также используют: sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
, если вы являетесь пользователем ubuntu .
Во-первых, DefaultModelBinder
не связывается с полями, поэтому вам нужно использовать свойства
public class HomeModel
{
public Foo Foo { get; set; }
}
. Во-вторых, помощники генерируют элементы управления на основе HomeModel
, но вы отправляете обратно на Foo
, Либо измените метод POST на
[HttpPost]
public ActionResult Save(HomeModel model)
, либо используйте BindAttribute
, чтобы указать Prefix
(который, по существу, разделяет значение префикса от опубликованных значений - поэтому Foo.Bar.Value
становится Bar.Value
для цели привязки)
[HttpPost]
public ActionResult Save([Bind(Prefix="Foo")]Foo model)
Обратите внимание, что вы не должны указывать параметр метода с тем же именем, что и одно из ваших свойств, иначе привязка будет неудачной, а ваша модель будет пустой.
У меня была такая же проблема, и после того, как я последовал за шагами @Stephen Muecke, я понял, что проблема вызвана тем, что мои входы были отключены (я отключил их с помощью JQuery на готовом документе), как вы можете видеть здесь: How я отправляю отключенный ввод в ASP.NET MVC? . В конце я использовал только для чтения, а не для отключенного атрибута, и все значения были успешно отправлены контроллеру.
Я только что открыл еще одну причину, которая может произойти, а именно, если ваше свойство называется Settings
! Рассмотрим следующую модель просмотра:
public class SomeVM
{
public SomeSettings DSettings { get; set; } // named this way it will work
public SomeSettings Settings { get; set; } // property named 'Settings' won't bind!
public bool ResetToDefault { get; set; }
}
В коде, если вы привязываетесь к свойству Settings
, он не может связываться (не только по почте, но даже при генерации формы). Если вы переименуете Settings
в DSettings
(и т. Д.), Он снова начнет работать снова.
У меня была та же проблема, но как только я создал HIDDEN FIELD для внешнего ключа ... все это работало просто отлично ...
ПРИМЕР ФОРМЫ:
@using (Html.BeginForm("save", "meter", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => Model.Entity.Id)
@Html.HiddenFor(model => Model.Entity.DifferentialMeter.MeterId)
@Html.HiddenFor(model => Model.Entity.LinearMeter.MeterId)
@Html.HiddenFor(model => Model.Entity.GatheringMeter.MeterId)
... all your awesome controls go here ...
}
ПРИМЕР ДЕЙСТВИЯ:
// POST: /Meter/Save
[HttpPost]
public ActionResult Save(Meter entity)
{
... world-saving & amazing logic goes here ...
}