ASP.NET 4.5 MVC с использованием Razor
Здравствуйте, я младший разработчик, и я столкнулся с проблемой, когда все выглядит так, как будто оно должно работать, но мне, кажется, что-то не хватает.Я пытаюсь передать объект класса из контроллера в представление, которое используется для обновления записи базы данных для этого объекта.Моя модель, контроллер и вид:
Модель:
public class Contract
{
public int ID { get; set; }
public string PartName { get; set; }
public decimal PartPrice { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public string Notes { get; set; }
public string CustomerNumber { get; set; }
}
Контроллер:
[HttpGet] //the code that genereates these parameters is next on the chopping block
public ActionResult UpdateContractPricing(string customerNumber, string partNumber, decimal contractPrice, DateTime contractStart, DateTime contractEnd, string notes, int ID)
{
Contract currentContract = new Contract
{
ID = int.Parse(ID),
PartName = partNumber,
PartPrice = Decimal.Parse(contractPrice),
StartDate = contractStart,
EndDate = contractEnd,
CustomerNumber = customerNumber,
Notes = notes
};
ViewBag.currentContract = currentContract;
return View(new Contract());
}
Вид (<p>
теги для подтверждения):
@using NewWebApplication.Models
@model NewWebApplication.Models.Contract
@{
Contract con = new Contract();
con = (Contract)ViewBag.currentContract;
var tes = "";//for use as a breakpoint only}
<p>@con.ID</p>
<p>@con.CustomerNumber</p>
<p>@con.PartName</p>
<p>@con.PartPrice</p>
<p>@con.StartDate</p>
<p>@con.EndDate</p>
<p>@con.Notes</p>
В настоящее время происходит то, что объект currentContract успешно создается с правильной информацией, но как только он отсылается в представление, все, по-видимому, устанавливается равным нулю, и я получаю исключение System.ArgumentNullException.Я попытался передать объект в ViewBag и ViewData, но получить ту же ошибку.
VS 2015 выплевывает:
- Исключение типа 'System.ArgumentNullException' произошло в mscorlib.dll, но не было обработано в коде пользователя-Дополнительная информация: значение не может быть нулевым.
И Chrome выплевывает:
-Значение не может быть нулевым.Имя параметра: Строка-Описание: необработанное исключение произошло во время выполнения текущего веб-запроса.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
- Сведения об исключении: System.ArgumentNullException: значение не может быть нулевым.Имя параметра: String
Что меня смущает, так это то, что объект currentContract
имеет все свои свойства, успешно установленные в ненулевое значение контроллером перед передачей в представление.Я что-то пропустил?Я где-то совершаю ошибку новичка?Почему представление действует так, как будто я посылаю ему объект, полный нулей?
Для справки, я следовал каждому из этих руководств до T безрезультатно:
Первый урок
Второй урок
Третий урок
РЕДАКТИРОВАТЬ 8/2: Я исправил вводмодель и контроллер.Я также попытался создать новый Контракт в представлении под названием con.con имеет все свои свойства, скопированные из данных viewbag, , которые являются правильными и не содержат нулей и всегда успешно копируются в con .Я по-прежнему получаю то же исключение ArgumentNullException для первого свойства @ con.property, которое я пытаюсь отобразить, независимо от того, какое из них я пытаюсь использовать или каково его значение.