Я добавил список в свою модель представления, но когда я обращаюсь к нему в цикле foreach в представлении, которое он выдает:
NullReferenceException: Object reference not set to an instance of an object.
AspNetCore.Views_MyActivationCampaign_Campaign.ExecuteAsync() in Campaign.cshtml
+ foreach(var dp in Model.DpRestrictedList)
Это список, который я добавил:
public List<DpRestricted> DpRestrictedList { get; set; } = new List<DpRestricted>()
{
new DpRestricted(){DpId = 1, Name = "Post Restricted" },
new DpRestricted(){DpId = 2, Name = "Unrestricted" },
new DpRestricted(){DpId = 3, Name = "Customer Restricted" }
};
}
public class DpRestricted
{
public int DpId { get; set; }
public string Name { get; set; }
}
и я пытаюсь перебрать его следующим образом:
<div class = "row">
<fieldset>
<legend>Delivery Methods</legend>
<div id = "radio">
@*<input type = "radio" id = "new-method">
<label for = "new-method">New Method</label>
<input type = "radio" id = "dm-101" checked = "checked">
<label for = "dm-101">DM_101</label>
<input type = "radio" id = "delivery-method-2">
<label for = "delivery-method-2">Delivery Method 2</label>*@
@{
foreach(var dp in Model.DpRestrictedList)
{
@Html.RadioButtonFor(model => model.DeliveryPointRestrictionId, dp);
}
}
</div>
</fieldset>
</div>
Используя оператор и пример:
@model WorkstreamX.Web.Core.ViewModels.ActivationCampaignViewModel
...
<div class = "col-md-4">
<label for = "headline">Campaign</label>
@Html.EditorFor(model => model.CampaignName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.CampaignName)
</div>
Выше приведен оператор using в представлении и пример того, как он уже используется где-то еще в нем. Когда я проверяю, не только список имеет значение null, но и модель в операторе цикла также имеет значение null. Это тот случай, когда мне нужно обновить модель представления в контроллере в этот момент? Это то, что я собираюсь попробовать. Я просто хотел задать этот вопрос и, возможно, выяснить, почему это происходит. Любые советы здесь очень ценятся.
[править] Как я решил эту проблему:
Я добавил аргумент к моему мнению:
до return View();
после return View(new ActivationCampaignViewModel());
Я до сих пор не совсем понимаю, почему это так, поскольку у меня раньше была модель. Я предполагаю, что из-за того, что я не вызвал конструктор, список не был создан, и все это рухнуло.
Разница в том, что раньше вы использовали только лямбда-выражения на основе модели, а не экземпляр модели, который всегда был бы null.





Ваш код должен быть похож на приведенный ниже.
Public ActionResult GetEmployee()
{
var employee = GetEmployee();
return View(employee);
}
@model IEnumerable<Appname.ViewModel.Employee>
@{
foreach(var data in Model) {}
}
Пожалуйста, добавьте контекст к вашему ответу. Самого кода недостаточно. Объясните, почему вы считаете, что это должно сработать.
Как я исправил эту проблему:
Я добавил аргумент к моему мнению:
до return View();
после return View(new ActivationCampaignViewModel());
Я до сих пор не совсем понимаю, почему это так, поскольку у меня раньше была модель. Я предполагаю, что из-за того, что я не вызвал конструктор, список не был создан, и все это рухнуло.
Да, извините, я задал вопрос слишком рано, и все, что мне нужно было, чтобы избавиться от исключения, это создать новую модель представления в контроллере и передать ее. Почему это так, поскольку у меня, кажется, был объект модели раньше. Это только из-за того, что по умолчанию установлен список, который затем потребовал обновления объекта?