Вы можете использовать это так в вашем методе действия:

ли альтернатива[Bind(Exclude = "Id")] (Связанный вопрос) ?

Могу ли я написать модель переплета?

Ответы на вопрос(5)

я считаю, что удалить очень просто, а также я сделал простое расширение, которое может пригодиться для игнорирования нескольких подпорок ...

    /// <summary>
    /// Excludes the list of model properties from model validation.
    /// </summary>
    /// <param name="ModelState">The model state dictionary which holds the state of model data being interpreted.</param>
    /// <param name="modelProperties">A string array of delimited string property names of the model to be excluded from the model state validation.</param>
    public static void Remove(this ModelStateDictionary ModelState, params string[] modelProperties)
    {
        foreach (var prop in modelProperties)
            ModelState.Remove(prop);
    }

Вы можете использовать это так в вашем методе действия:

    ModelState.Remove("ID", "Prop2", "Prop3", "Etc");

C # 6 позволяет исключить свойство более безопасным способом:

public ActionResult Edit(Person person)
{
    ModelState.Remove(nameof(Person.Id));

    if (ModelState.IsValid)
       {
           //Save Changes;
       }
    }
}

или же

public ActionResult Index([Bind(Exclude = nameof(SomeDomainModel.Id))] SomeDomainModel model)
 Chef_Code09 янв. 2017 г., 23:21
Мне нравится этот ответ, но я все еще верю, что вы должны использоватьViewModels а такжеПОКО-х в отношении шаблона проектирования иSoC.
Решение Вопроса

это называется просмотр моделей. Модели представлений - это классы, которые специально адаптированы к конкретным потребностям данного представления.

Так что вместо:

public ActionResult Index([Bind(Exclude = "Id")] SomeDomainModel model)

использовать:

public ActionResult Index(SomeViewModel viewModel)

где модель представления содержит только те свойства, которые необходимо связать. Затем вы можете отобразить между моделью представления и моделью. Это отображение может быть упрощено сAutoMapper.

В качестве наилучшей практики я бы порекомендовал вам всегда использовать модели представлений и из них.

 Darin Dimitrov08 янв. 2011 г., 18:00
@Rookian, да, это хорошая практика иметь отдельные модели представлений.
 mindplay.dk27 июл. 2011 г., 20:19
@Darin: поэтому, когда у вас есть большой, сложный граф доменных объектов со многими свойствами (и отношениями, правилами проверки и т. Д.), Которые должны быть представлены в форме, вы переопределяете все соответствующие свойства в своих моделях представления, вручную скопировать все свойства между ними и т. д.? Похоже, что это привело бы к множеству дублирования, жестких зависимостей и избыточного кода, поэтому я избегал его как чумы - даже несмотря на то, что это похоже на «правильный» подход, на практике я не понимаю, как вы получите вокруг всего неловкого дублирования и повторения .. ??
 jgauffin08 янв. 2011 г., 09:14
+1 Это лучшее описание, которое я когда-либо видел о ViewModel vs Business model. Я никогда не думал об этом с точки зрения безопасности. Но это причина использовать модель представления, по крайней мере, для http.
 Darin Dimitrov27 июл. 2011 г., 20:43
@ mindplay.dk, я поместил все, что нужно, в модель представления. Если моя исходная модель предметной области имеет какой-то сложный график свойств, я мог бы сгладить его. Но еще раз я включаю только то, что мне нужно показать / редактировать в представлении. Если это просто для сохранения некоторых данных в скрытых полях (эмуляция вида ViewState), то я не включаю эти свойства в модель представления. Я включил только идентификатор, который позволит мне получить эту информацию оттуда, где она хранится. А что касается ручного копирования, нет, я ничего не делаю вручную, я использую AutoMapper, который делает это для меня.
 mindplay.dk28 июл. 2011 г., 17:37
@ Darin: но вы дублируете все те свойства из вашей доменной модели, которые требуются в представлении, правильно? А как насчет аннотаций валидации, дублируете ли вы все эти аннотации или у вас есть только аннотации валидации на моделях представления? (Спасибо, что поделился!)

которое я понял.

public ActionResult Edit(Person person)
{
    ModelState.Remove("Id"); // This will remove the key 

    if (ModelState.IsValid)
       {
           //Save Changes;
       }
    }
}

Вы можете исключить свойства напрямую с помощью атрибута;

[BindNever]
 Omtechguy18 апр. 2018 г., 16:11
Работает также на .NET Framework, а не только ядро.

Ваш ответ на вопрос