Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 为什么回发时我的模型属性重置为空?_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 为什么回发时我的模型属性重置为空?

Asp.net mvc 为什么回发时我的模型属性重置为空?,asp.net-mvc,Asp.net Mvc,我创建了一个视图模型,并允许用户编辑其中一个属性。在postbac/submit上,用户编辑的属性是正确的,但其他属性重置为默认(null)值 在较低的方法中,我希望访问Shift属性,但它为null 我做错了什么 谢谢 丹麦安德斯 public async Task<ActionResult> Status(int shiftId) { var shift = await _shiftRepository.GetByIdAsync(shift

我创建了一个视图模型,并允许用户编辑其中一个属性。在postbac/submit上,用户编辑的属性是正确的,但其他属性重置为默认(null)值

在较低的方法中,我希望访问Shift属性,但它为null

我做错了什么

谢谢

丹麦安德斯

        public async Task<ActionResult> Status(int shiftId)
    {
        var shift = await _shiftRepository.GetByIdAsync(shiftId);
        var transition = await _shiftChangeRepository.GetByIdAsync(shiftId);

        if (!_permissionService.CurrentUserMayViewShift(shift,transition))
        {
            return RedirectToAction("NotAllowed");
        }

        // No prior transaction => ask user what to do
        if (transition == null)
        {
            var transitionStartModel = new TransitionStartModel(){Shift = shift};

            return View(transitionStartModel);
        }

        return null;
    }

控制器将只接收页面发送给它的值。如果你不把它们放在页面上,它们就不会在那里了


如果愿意,您可以将它们放置在隐藏字段中,或者从数据存储中检索原始对象,只更新您希望用户修改的一个属性(这将防止任何人篡改他们不应该更改的值,因此我建议您对大多数值都这样做)。

在您的视图中,对于可能要显示但不想编辑的字段,以及希望返回请求中的值,请使用“HiddenFor”


你能澄清一下是什么问题吗。你说shift属性为null,你是说
await\u shiftRepository.GetByIdAsync(shiftId)返回空值?如果是,如果ShiftId设置正确?请添加视图代码…您的输入是否正确?
        [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Status(TransitionStartModel model)
    {
        if (ModelState.IsValid)
        {
            try
            {
                if (model.EnumTransitionTypes == EnumTransitionTypes.ReportSick)
                {
                    return RedirectToAction("StartFlowReportSick");
                }

                return RedirectToAction("Index", "Home");
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", e.Message);
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }
    @Html.HiddenFor(m => m.MyFieldThatWontBeEdited)
    @Html.HiddenFor(m => m.MyDisplayOnlyField)