为了账号安全,请及时绑定邮箱和手机立即绑定

ViewBag 不保存状态

ViewBag 不保存状态

C#
慕沐林林 2021-10-31 10:09:21
我测试了我的应用程序,在测试时我发现了一个错误,我认为它来自 ViewBage。我有 500 名医生和专业的列表,当我想编辑电话、地址等时,下拉列表会显示列表中的第一个 SpeciltyName,因此它不会保存医生的 SpeciltyName 您可以查看下面的图片以更好地理解联系人控制器.cs// GET: Contacts/Edit/5        public async Task<ActionResult> Edit(int? id)        {            if (id == null)            {                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);            }            Contact contact = await db.Contacts.FindAsync(id);            if (contact == null)            {                return HttpNotFound();            }            ViewBag.TypeId = new SelectList(db.ContactTypes, "Id", "Name", contact.TypeId);            ViewBag.CategoryId = new SelectList(db.ContactCategories.Where(s => s.Name != "Attorney" && s.Name != "Law Firm"), "Id", "Name", contact.CategoryId);            ViewBag.ConCompanyId = new SelectList(db.Contacts.Where(s => s.ContactCategory.Name == "Insurance Carrier" || s.ContactCategory.Name == "Facility"), "Id", "Firstname");            return View(contact);        }        // POST: Contacts/Edit/5        // To protect from overposting attacks, please enable the specific properties you want to bind to, for         // more details see http://go.microsoft.com/fwlink/?LinkId=317598.        [HttpPost]        [ValidateAntiForgeryToken]        public async Task<ActionResult> Edit([Bind(Include = "Id,UserId,Title,Firstname,Lastname,isCompany,CategoryId,TypeId,DateOfBirth,Address1,Address2,City,State,Zip,Email,Mobile,Phone,Website,Country,LocationGPS,Gender,Notes,Latitude,Longitude")] Contact contact)        {            if (ModelState.IsValid)            {                db.Entry(contact).State = EntityState.Modified;                await db.SaveChangesAsync();                return RedirectToAction("Index");            }        }任何帮助家伙?
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

ViewBag 值仅适用于当前请求。viewbag 代码确实被重定向到一个异步任务来设置 ViewBag 的值。因此,为 ViewBag 设置的值将随着该请求而消失。解决方案:相反,如果您在相应的 ActionResult 中设置 ViewBag 的值而不是共享函数,那么它将继续存在并且您将在视图中获得该值。

您可以改用 TempData。TempData 在内部使用 Session 来存储值。 


查看完整回答
反对 回复 2021-10-31
  • 1 回答
  • 0 关注
  • 210 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信