Ссылка на объект не установлена ​​для экземпляра объекта - объект формы имеет значение null? - PullRequest
0 голосов
/ 20 сентября 2011

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

Я простопытается обновить 1 поле в таблице.Обновляемое поле может быть или не быть нулевым.

Я получаю сообщение об ошибке в контроллере.Объект 'ilpCareerGoal' возвращается в ноль и вызывает ошибку.

Контроллер:

[Authorize]
    public ActionResult editCareerGoal(int emplID)
    {
        ilpCareerGoal careerGoal = qService.getCareerGoal(emplID);
        return View(careerGoal);
    }

[Authorize]
    [HttpPost]
    public ActionResult editCareerGoal(ilpCareerGoal careerGoal)
    {
        try
        {
            qService.editCareerGoal(careerGoal);
            return RedirectToAction("Index", "Home");
        }
        catch
        {               
            throw;
        }

    }

Просмотр:

@model ILP.Models.ilpCareerGoal

@{
ViewBag.Title = "editCareerGoal";
}

<h2>Edit Your Career Goal</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm("editCareerGoal", "Home", FormMethod.Post, new { id = "careerGoalForm" }))
{
@Html.ValidationSummary(false)
<fieldset>
    <legend>Career Goal</legend>
    <div class="editor-label">
        @Html.HiddenFor(model => model.emplID)
        Record information here about what you're striving for professionally.
    </div>
    <div class="editor-field">
        @Html.TextAreaFor(model => model.careerGoal, new { cols = "90", rows = "15" })
    </div>

    <p>
        <input type="submit" value="Update" />
    </p>
</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

Когда я отлаживаю, я вижу, что careerGoal'в моем контроллере нет нуля ... Я ценю любую помощь здесь!

Обновление - может быть, это вещь модели?На самом деле у меня есть это поле в другой модели ... вот мой код модели для обновления на всякий случай ....

Модель:

public bool editCareerGoal(ilpCareerGoal tcareerGoal)
        {
            employeeDataClassesDataContext careerGoals = new employeeDataClassesDataContext();
            ilpCareerGoal careerGoal;

            try
            {                   
                careerGoal = careerGoals.ilpCareerGoals.Single(c => c.emplID == tcareerGoal.emplID);
                careerGoal.careerGoal = tcareerGoal.careerGoal;
                careerGoals.SubmitChanges();
                return true;
            }
            catch
            {
                return false;
            }
        }

1 Ответ

0 голосов
/ 21 сентября 2011

Возможно, что конфликт имен между свойством careerGoal в классе ilpCareerGoal и переменной с именем careerGoal типа ilpCareerGoal в вашем действии editCareerGoal приводит к нервному сбою DefaultModelBinder.

Попробуйте изменить имя переменной в вашем действии на что-то другое, например careerGoalModel.

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