Tengo un proyecto y tengo que reescribir la interfaz de CSHTML a Angular. Configuré la página de registro en Angular y, mediante una solicitud PUT, puedo enviar los datos al backend. Pero parece que no puedo extraer las diferentes variables de él. Mi principal problema es que no sé cómo acceder al archivo que viene cuando envío la solicitud PUT. La solicitud:
register() {
var body = {
ID: '',
firstName: this.registerModel.value.firstName,
lastName: this.registerModel.value.lastName,
gender: this.registerModel.value.gender,
email: this.registerModel.value.email,
password: this.registerModel.value.password
};
return this.http.post(this.apiUrl + '/Register/Register', body)
}
Llamo a la función cuando el usuario envía el formulario:
onSubmit(){
console.log("clicked");
this.service.register().subscribe()
}
Y la función a la que llama mira a través del Json donde se almacenan los usuarios existentes, y debe compararlos (los valores de retorno de Json son solo para pruebas):
[HttpPost]
public IActionResult Register(User user)
{
string path = @"./Data/Users.json";
//Instantiate User
User newUser = new User();
Guid ID = Guid.NewGuid();
newUser.ID = ID;
newUser.firstName = user.firstName;
newUser.lastName = user.lastName;
newUser.email = user.email;
newUser.gender = user.gender;
newUser.password = user.password;
if (user.firstName == null || user.lastName == null
|| user.email == null || user.gender == null || user.password == null)
{
ViewData["message"] = "Please Fill all fields!";
var data = "null in variables";
return Json(new { data = data });
}
string fileContent;
if (System.IO.File.Exists(path))
{
fileContent = System.IO.File.ReadAllText(path);
users = JsonConvert.DeserializeObject<List<User>>(fileContent);
foreach (User current in users)
{
if (current.email == newUser.email)
{
ViewData["message"] = "Already exists!";
var data3 = "existing user";
return Json(new { data3 = data3 });
}
}
users.Add(newUser);
string json = JsonConvert.SerializeObject(users);
System.IO.File.WriteAllText(path, json);
}
var data2 = "succes";
return Json(new { data2 = data2 });
}
Solución del problema
Pudimos solucionar el problema. Tengo que agregar algunas modificaciones al controlador y al archivo Startup.cs. Publicaré fragmentos de código cuando pueda acceder a la PC en la que está activado el código. Pero en breve: tuve que agregar APIController y enrutamiento al controlador, la función necesitaba una etiqueta fromBody y tuve que cambiar una línea en el archivo Startup.Cs. Ahora funciona perfectamente.
No hay comentarios:
Publicar un comentario