1

У меня есть вид, который выглядит ниже. Каждое поле имеет префикс, прикрепленный к свойству name, но модель в моем бэкэнд имеет свойство без префикса.Удалить префикс из опубликованных данных в asp.net mvc

@using (Html.BeginForm("Save", "Home", FormMethod.Post)) 
{ 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <input type="hidden" name="prefix" value="prefix"/> 
     <input type="text" id="prefix.Name" name="prefix.Name"/> 
     <input type="submit" value="submit" /> 
    </fieldset> 
} 

Мой метод действий выглядит примерно как показано ниже:

public ActionResult Save([ModelBinder(typeof(CustomModelBinder))]Employee employee) 
     { 
      throw new NotImplementedException(); 
     } 

Моя модель выглядит следующим образом:

public class Employee 
    { 
     public string Name { get; set; } 
    } 

Может кто-то помочь мне, как достичь этого через пользовательские модели вяжущего, я хочу префикс полосы из каждого из опубликованных имен форм.

Добавлено данные формы:

prefix:prefix 
prefix.Name:Hello World!! 

Я попытался ниже код, как хорошо, но это не работает. Может кто-нибудь объяснить, что здесь не так.

public ActionResult Save([Bind(Prefix = "prefix")]Employee employee) 
     { 
      throw new NotImplementedException(); 
     } 
+0

Я думаю, что это именно то, что вам нужно: http://www.codeproject.com/Articles/605595/ASP-NET-MVC-Custom-Model-Binder – Icarus

+0

Я уже посмотрел на него. Это пример привязки пользовательской модели. Мое требование похоже на это, но не совсем то же самое. Мои данные формы имеют префиксное значение, я хочу удалить это префиксное значение до того, как привязка модели произойдет, чтобы он мог привязываться к моей модели. –

ответ

2

Попробуйте добавить обязывающее значение префикса, например:

public ActionResult SetPassword([Bind(Prefix = "Form")] UserSetPasswordForm form) 
{ 
    if (!ModelState.IsValid) 
    { 
     .... 
    } 

    ... 
} 
+0

Ниже код не работает, значение свойства Name теперь просто префикс: public ActionResult Save ([Bind (Prefix = "prefix")] string Name) { throw new NotImplementedException(); } –

0

Было странное поведение, когда я изменил значение своего префикса, он начал работать.

public ActionResult Save([Bind(Prefix = "**someothervalue**")]Employee employee) 
     { 
      throw new NotImplementedException(); 
     } 

Спасибо всем за помощь.

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