C# 发布后如何获得可视包更改?
我有一个使用ASP.NET MVC和C#的单页web应用程序,控制器代码如下所示 它只有两个控制器,一个获取索引操作和一个联系后操作。联系人操作用于我页面底部的联系人表单 下面是发生的情况。当页面运行ViewBag.Contact时,它会按应有的方式显示在我的联系人表单的标题上。当我提交表单并发布时,查看包保持不变。我假设这是因为我的联系人控制器没有返回视图(),而是返回重定向(“联系人”) 我需要在适当的地方重定向,使页面看起来不移动或改变任何地方,除了在ViewBag中。联系人作为标题 如果使用return View(),我可以使ViewBag正常工作。但是,它将从页面顶部而不是表单所在的底部再次加载页面,以使页面看起来没有重新加载 我的问题是,有没有一种方法可以让ViewBag在不重新加载页面或不从用户位于表单上的位置移动的情况下工作 (我知道我可以通过其他脚本(如javascript)来完成这一点,但我希望尽可能多地使用C#ASP.Net) 多谢各位C# 发布后如何获得可视包更改?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个使用ASP.NET MVC和C#的单页web应用程序,控制器代码如下所示 它只有两个控制器,一个获取索引操作和一个联系后操作。联系人操作用于我页面底部的联系人表单 下面是发生的情况。当页面运行ViewBag.Contact时,它会按应有的方式显示在我的联系人表单的标题上。当我提交表单并发布时,查看包保持不变。我假设这是因为我的联系人控制器没有返回视图(),而是返回重定向(“联系人”) 我需要在适当的地方重定向,使页面看起来不移动或改变任何地方,除了在ViewBag中。联系人作为标题 如果
namespace MySite.MVC.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Contact = "SEND ME AN EMAIL BY FILLING OUT THE FORM";
return View();
}
[HttpPost]
public ActionResult Contact(ContactModels c)
{
if (ModelState.IsValid)
{
using (var client = new SmtpClient("smtp.gmail.com", 587))
{
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("FakeEmail@gmail.com", "password");
string body = string.Format(
"First Name: {0}\nLast Name: {1}\nEmail: {2}\nComment: {3}",
c.FirstName,
c.LastName,
c.Email,
c.Comment
);
var message = new MailMessage();
message.To.Add("SendingEmail@gmail.com");
message.From = new MailAddress(c.Email, c.Name);
message.Subject = String.Format("Contact Request From: {0} ", c.Name);
message.Body = body;
message.IsBodyHtml = false;
try
{
client.Send(message);
}
catch (Exception)
{
return View("Error");
}
}
}
ViewBag.Contact = "THANKS, I'VE RECEIVED YOUR MESSAGE";
return Redirect("#Contact");
}
}
}
您需要的是如何呈现“部分视图”。如果您只想进行部分页面重新加载,那么最终将使用AJAX和JS,但框架可以为您构建大部分内容。以下是一些很好的例子:
答案是否定的:
- 如果不重新加载页面,则无法更新
视图包
- 您不能更新
并将其显示在同一页面上ViewBag
ViewBag
是为一个请求设置并激活的,因此,如果您在页面(或其后面的控制器)中设置了ViewBag
,则在发出另一个HTTP请求(打开另一个页面或刷新当前页面)时,可以显示它
您可以通过其他方式(Ajax、Javascript、PartialView)完成所需