2011-04-18 8 views
9

Quiero detectar el idioma del navegador para poder cambiar de idioma cuando las personas se conectan a mi sitio web. Pero cuando un usuario ya no haya llenado en el idioma en las opciones de los navegadores siempre me dan un valor nulo conDetectando el idioma del navegador y evitando la excepción de nullreference

string browserlanguage = Request.UserLanguages[0] 

¿Cómo podría evitar el error "Referencia a objeto no establecida como instancia de un objeto."

Respuesta

9

Compruebe Request.UserLanguages != null.

Por ejemplo:

var l = Request.UserLanguages; 
string browserlanguage = l ?? l[0] : "en"; 
// fall back to en, or set to "" or null. 

Editar: (re tu comentario) Si lo anterior falla, también, Request sí era nula, que yo sepa es imposible (se puede comprobar Request != null para asegurarse de que?). ¿Posiblemente tuviste una referencia nula más adelante en tu código?

+0

Request.UserLanguages! = Null funcionaba bien, thk u – Sjemmie

+0

Muy bien, muy bien :) – mafu

+0

Sólo una cabeza, si el ternario sintaxis de la sentencia está mal en lo que usted envió. Debe ser '' 'string browerlanguage = l? l [0]: "en"; '' ' – AjayAujla

6
string lang = (Request.UserLanguages ?? Enumerable.Empty<string>()).FirstOrDefault(); 
Cuestiones relacionadas