- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将成功消息从我的 Controller 操作传递到 View 。但是,我尝试或遇到 googleing 的任何解决方案似乎都不起作用。经过一个小时试图找出我做错了什么,我会在这里问。
在示例中,我使用了 ViewBag,但我尝试使用 TempDate["MyMessage"] = "Some message";仍然相同.. View 中的值始终为 null...
Controller
public ActionResult EditSupplier(Supplier supplier)
{
try
{
if (ModelState.IsValid)
{
this._service.Update(supplier);
ViewBag.UserMessage = "Supplier updated successfully";
}
}
catch (Exception ex)
{
ModelState.AddModelError(String.Empty, ex.Message);
TempData["UserMessage"] = "Error, supplier couldn't be updated";
return View("Error");
}
return RedirectToAction("Supplier", new { id = supplier.SupplierId });
}
查看
@if (ViewBag.UserMessage != null)
{
<p>@ViewBag.UserMessage.ToString()</p>
}
最佳答案
在 RedirectToAction
调用中,您通过向客户端浏览器发送“重定向”状态来使其重定向。一旦您返回该状态并结束您的响应,您的本地状态就会丢失 - 它不会持续到下一个请求。您需要另一种“方式”来保留该信息,例如重定向到 SupplierEditSuccess
,这将是一个假定编辑成功的 View ,或者传递 Success
Supplier
的参数表示上次编辑成功并显示相应的消息。
但是,在您的异常捕获中,您应该能够在 View 中看到 TempData
,因此如果您故意在 this._service.Update(supplier);
那么您应该能够访问 TempData["UserMessage"]
中的消息。
编辑 我在对 "storing a js value from 1 ActionResult to use in another ActionResult" 的回答中写了很多关于在操作结果之间传递数据的内容,而在我对 "Is ViewBag and ViewData also part of state management in asp.net mvc?" 的回答中写得不那么直接,这可能会帮助您为您的场景创建合适的解决方案。
关于c# - TempData、ViewBag,没有任何作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19912665/
我需要将一些信息传递给部分 cshtml View 。为此,我使用了 ViewDataDictionary 和 ViewBag。 public ActionResult TaskPage(int ID
我有 RedirectToAction 作为 Controller 中的返回值,在我看来我使用 ViewBag。虽然在 RedirectToAction 之后 ViewBag 变空是一个众所周知的问题
我已经为 HtmlHelper 编写了扩展方法,该方法是从需要访问 ViewBag 以获取页面设置的信息的母版页调用的。 这是方法签名: public static string BuildFavor
我正在尝试在我的应用程序中使用 ViewBag,我拥有所有最近的 dll、最新版本的 MVC 3,但我仍然收到错误: "The name 'ViewBag' does not exist in the
我正在尝试通过 JavaScript 将 ViewBag 中的值插入到输入中并动态创建该值。 我调用 Controller 创建的employeeID的值 public string GetEmplo
我需要显示存储在 ViewBag 中的日期,为此我需要使用 DisplayTemplate。现在,如果它是模型中的日期,我会使用 DisplayFor 助手,但我该如何为 ViewBag 做呢? 我有
我知道网上已经有一些解决方案,但在尝试了所有解决方案后,我对自己感到困惑。 我只想澄清我尝试过的解决方案: 确保 Microsoft.AspNet.Web.Optimization 或 System.
在MSDN documentation ,有 ViewBag.MyMessageToUsers 和 ViewBag.AnswerText。在ASP.net/mvc tutorial , 有 ViewB
这个问题在这里已经有了答案: Can the ViewBag name be the same as the Model property name in a DropDownList? (2 个答
我测试了我的应用程序,在测试时我发现了一个错误,我认为它来自 ViewBage。我有 500 名医生和专科医生的名单,当我想编辑电话、地址等时,下拉菜单会显示列表中第一个专科医生的名字,所以它不会保存
我有一个在数据库中注册聊天的表单,一切正常,问题是 ViewBag,因为这会将消息带到 View 中的 Javascript,以便它可以进行验证。当用户注册时,应该会出现一条成功消息,但在 ViewB
有没有办法清除ViewBag? ViewBag 没有 setter,因此不能简单地取消它: ViewBag = null; 我似乎也不能use reflection迭代它并清除它的动态属性,因为您不能
想象一个名为的 View 包 ViewBag.Modes 这包含以下内容: Simple Advanced Manual Complete 如何像在数组中那样通过索引访问 viewbag? 例如 S
是否可以在调用重定向之前设置 ViewBag? 我想要这样的东西: @ViewBag.Message="MyMessage"; RedirectToAction("MyAction"); 最佳答案 当
我正在做一个项目,我只需要从两个表中获取数据,我想使用 LINQ Query 来获取数据。 在我的 Controller 中: var Parameters = (from test in _db.t
与'12 asp.net C# MVC4 - Int.Appl.Template EF Code First 这是我非常简单的脚本 $('#Add').click(function (e)
这是我的 Controller 代码: const string template = "clm_adj_process_cd ('@[CdCode]',varchar) ~f.src_dm_plat
我在 MVC3 项目中有一个 View ,在加载时我将一个实体设置到 ViewBag 中。 实体的属性之一是 Datetime? 类型。 在 $(document).ready我将 ViewBag 中
我尝试将 ViewBag.OrderId 设置为数据属性 data-orderId 的值,但在 =Add } JS: $(".btn-add-note").click(function(){
我需要显示存储在 ViewBag 中的日期,并且我需要使用 DisplayTemplate 来实现此目的。现在,如果它是模型中的日期,我将使用 DisplayFor 助手,但我该如何为 ViewBag
我是一名优秀的程序员,十分优秀!