Ho bisogno di un'azione restituire un frammento JavaScript.Come restituire Javascript da un'azione del controller ASP.NET 5 MVC 6
In MVC 5 abbiamo:
return JavaScript("alert('hello')");
ma in MVC 6 WE DO NOT.
C'è un modo per farlo ora?
Ho bisogno di un'azione restituire un frammento JavaScript.Come restituire Javascript da un'azione del controller ASP.NET 5 MVC 6
In MVC 5 abbiamo:
return JavaScript("alert('hello')");
ma in MVC 6 WE DO NOT.
C'è un modo per farlo ora?
Ciò può essere ottenuto restituendo ContentResult MSDN
return Content("<script language='javascript' type='text/javascript'>alert('Hello world!');</script>");
o altro modo sarebbe facendo uso di ajax
return json(new {message="hello"});
$.ajax({
url: URL,
type: "POST",
success: function(data){alert(data.message)},
});
Puoi per favore includere una spiegazione anche con questo. Le sole risposte al codice sono generalmente disapprovate perché prive di ragionamento. Forse include un collegamento a MSDN o qualcosa che fa riferimento a Contenuto? –
La prima opzione non funziona con mvc 6. Non succede nulla. – Beetlejuice
Puoi aggiungere altro al tuo codice piuttosto che una semplice dichiarazione di ritorno, lato client, codice del controller. Preferirei comunque la seconda opzione. – din
Attualmente ASP.NET MVC 6 non supporta JavaScriptResult
come in MVC 5. Una discussione interessante per questo può essere trovata qui (ci sono alcune soluzioni anche per il tuo problema): https://github.com/aspnet/Mvc/issues/2953
Personalmente penso che inviare il codice JS al client sia una cosa negativa (inviare al client i dati di cui il JS ha bisogno e quindi eseguire le chiamate di funzioni lì) ma sembra che ci sia una situazione valida per questo (guarda l'ultimo commento).
Questa sarà una sfida per il mio progetto attuale. Ma darò una prova. – Beetlejuice
Invio ??? No! Dovrebbe essere usato per la condivisione di creare dinamicamente JS utilizzando l'endpoint del sito. Ad esempio per le costanti create dinamicamente. – Maxim
Penso che possiamo impiantare JavaScriptResult da soli poiché non è supportato ufficialmente. E 'facile:
public class JavaScriptResult : ContentResult
{
public JavaScriptResult(string script)
{
this.Content = script;
this.ContentType = "application/javascript";
}
}
ritorno Content (""); – din
@din Perché non lo pubblichi come risposta? – Christos
@Christos come desideri :-) – din