MVC-4 Changement ViewBag.Le Message sur le serveur?
Je suis débutant dans le MVC de codage.
Lorsque l'application démarre, le ViewBag.Message est le suivant: Choisir un fichier à télécharger.
Après un téléchargement réussi, il se transforme en: Fichier téléchargé avec succès!
Est-il un moyen que je puisse le faire revenir et de montrer le "Choisir un fichier à télécharger" message de nouveau après environ 5 secondes, sans utiliser de javascript ?
J'ai pensé que si mvc eu quelques construite en fonction de temps je pourrais utiliser peut-être ?
https://github.com/xoxotw/mvc_fileUploader
Mon point de vue:
@{
ViewBag.Title = "FileUpload";
}
<h2>FileUpload</h2>
<h3>Upload a File:</h3>
@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post, new {enctype = "multipart/form-data"}))
{
@Html.ValidationSummary();
<input type="file" name="fileToUpload" /><br />
<input type="submit" name="Submit" value="upload" />
@ViewBag.Message
}
Mon contrôleur:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Mvc_fileUploader.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Choose a file to upload!";
return View("FileUpload");
}
[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase fileToUpload)
{
if (ModelState.IsValid)
{
if (fileToUpload != null && fileToUpload.ContentLength > (1024 * 1024 * 1)) //1MB limit
{
ModelState.AddModelError("fileToUpload", "Your file is to large. Maximum size allowed is 1MB !");
}
else
{
string fileName = Path.GetFileName(fileToUpload.FileName);
string directory = Server.MapPath("~/fileUploads/");
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
string path = Path.Combine(directory, fileName);
fileToUpload.SaveAs(path);
ModelState.Clear();
ViewBag.Message = "File uploaded successfully!";
}
}
return View("FileUpload");
}
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
- Vous devez utiliser le javascript pour cela. Pourquoi cherchez-vous pour un non javascript solution?
Vous devez vous connecter pour publier un commentaire.
La réponse courte est Pas. Je suppose que parce que vous êtes "nouveau" vous voulez vous concentrer sur le MVC partie mais MVC et JavaScript sont très liés entre eux, penser client (JavaScript) et le serveur (MVC) et vous devriez vraiment maîtriser à la fois pour faire de bons sites web.
Normalement, le serveur n'a pas de déclencher des événements au navigateur et au lieu de cela, le navigateur en ferait la demande. Il existe des moyens pour obtenir le serveur pour déclencher des événements sur le client en utilisant des choses comme SignalR mais ce serait exagéré dans ce scénario.
Enfin... ce que vous essayez d'atteindre est très bien côté client de l'action, c'est à dire À en informer l'utilisateur de faire quelque chose. Si vous l'avez fait dans MVC vous feront perdre de la bande passante du réseau et ajouter des retards (pensez à des appels au serveur, dans le cher), alors qu'en réalité c'est un client d'action et devrait donc être fait en JavaScript.
Ne pas hésiter à partir de JavaScript. De l'embrasser. Regarder dans JQuery qui prend beaucoup de levage lourd loin pour vous.