Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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
C# 发布后如何获得可视包更改?_C#_Asp.net Mvc - Fatal编程技术网

C# 发布后如何获得可视包更改?

C# 发布后如何获得可视包更改?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个使用ASP.NET MVC和C#的单页web应用程序,控制器代码如下所示 它只有两个控制器,一个获取索引操作和一个联系后操作。联系人操作用于我页面底部的联系人表单 下面是发生的情况。当页面运行ViewBag.Contact时,它会按应有的方式显示在我的联系人表单的标题上。当我提交表单并发布时,查看包保持不变。我假设这是因为我的联系人控制器没有返回视图(),而是返回重定向(“联系人”) 我需要在适当的地方重定向,使页面看起来不移动或改变任何地方,除了在ViewBag中。联系人作为标题 如果

我有一个使用ASP.NET MVC和C#的单页web应用程序,控制器代码如下所示

它只有两个控制器,一个获取索引操作和一个联系后操作。联系人操作用于我页面底部的联系人表单

下面是发生的情况。当页面运行ViewBag.Contact时,它会按应有的方式显示在我的联系人表单的标题上。当我提交表单并发布时,查看包保持不变。我假设这是因为我的联系人控制器没有返回视图(),而是返回重定向(“联系人”)

我需要在适当的地方重定向,使页面看起来不移动或改变任何地方,除了在ViewBag中。联系人作为标题

如果使用return View(),我可以使ViewBag正常工作。但是,它将从页面顶部而不是表单所在的底部再次加载页面,以使页面看起来没有重新加载

我的问题是,有没有一种方法可以让ViewBag在不重新加载页面或不从用户位于表单上的位置移动的情况下工作

(我知道我可以通过其他脚本(如javascript)来完成这一点,但我希望尽可能多地使用C#ASP.Net)

多谢各位

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)完成所需