ASP.NET со строгим контролем типов MVC с [закрытой] платформой объекта ADO.NET

Это более короткий вариант принятого ответа: нижеприведенная функция извлекает биты от-до включительно, создавая битовую маску. После применения логики AND над исходным числом результат сдвигается, поэтому функция возвращает только извлеченные биты. Пропущены проверки индекса / целостности для ясности.

uint16_t extractInt(uint16_t orig16BitWord, unsigned from, unsigned to) 
{
  unsigned mask = ( (1<<(to-from+1))-1) << from;
  return (orig16BitWord & mask) >> from;
}
13
задан Community 23 May 2017 в 10:29
поделиться

2 ответа

Я начал работать с ASP.NET MVC, поэтому я натолкнулся на эту тему, поэтому я не уверен, что вы все еще проверяете улучшения.

Я не знаю Мне не нравится идея добавления нового свойства к частичному классу в структуре сущностей, потому что это не допускает столько изменений. Попробуйте пометить свой Deparment DropDown «Department.Id» следующим образом

<p>
    <label for="Department.Id">Department:</label>
<%= Html.DropDownList("Department.Id", new SelectList((IEnumerable)ViewData["Departments"], "Id", "Name"))%>
</p>

ModelBinding MVC Framework получит значение и применит его к свойству «Id» свойства навигации «Department». Я обнаружил, что другие значения Department равны нулю, но это не важно. Теперь у вас есть способ получить правильную сущность отдела и применить ее к свойству навигации по отделу новой сущности человека, созданной в модели привязки к вашему параметру действия, примерно так:

newPerson.Department = ctx.Department.First(d => d.DepartmentId == newPerson.Department.Id);

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

8
ответ дан 2 December 2019 в 01:41
поделиться

Улучшите свой контроль редактирования, чтобы он обрабатывал исключения, которые являются брошен и повторно отображает ввод, введенный пользователем. Я уверен, что вы собирались это сделать;)

Обновите свое представление, добавив валидаторы:

<label for="Name">Name:</label>
<%= Html.TextBox("Name", Model.Name) %>
<%= Html.ValidationMessage("Name", "*") %>

, а затем используйте их при редактировании:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Person Model)
{
    try
    {
       ctx.AttachUpdated(Model);  //extension
       ctx.SaveChanges();
       return RedirectToAction("Index");
    }
    catch
    {
        foreach (var err in Model.Errors)
          ModelState.AddModelError(err.PropertyName, err.ErrorMessage)

        return View(Model);
    }
}
0
ответ дан 2 December 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: