2015-11-05 3 views
0

У меня есть небольшое приложение, требующее входа в систему. Пользователь должен выбрать соответствующий сервер для подключения из выпадающего списка. В сообщении я беру имя пользователя, пароль, серверное имя и имя_сервера.ASP.Net MVC использовать javascript для публикации модели в модели

Войти модель установки как таковой:

string Username {get;set;} 
string Password {get;set;} 
Models.Server Server {get;set;} 

Модель сервера:

int Id {get;set;} 
string ODBCName{get;set;} 

У меня возникли проблемы, проходящей модель сервера в модели Вход на пост. Метод asp принимает модель входа.

public ActionResult Login(Models.Login login) 

Создание переменной, чтобы передать пост в JavaScript:

var selectionId = $("#Server_ODBCName").data("kendoDropDownList").value(); 
var selectionText = $("#Server_ODBCName").data("kendoDropDownList").text(); 
var username = document.getElementById("Username").value; 
var password = document.getElementById("Password").value; 
var dataItem = { 
      Username: username, 
      Password: password, 
      Server: { 
       Id: selectionId, 
       ODBCName: selectionText, 
      } 
     }; 

Когда объект размещен на метод .net Имя пользователя и пароль заселены, но сервер является недействительным.

Как передать сервер в пределах модели входа, чтобы модель серверной группы была заполнена правильно?

+0

'Модель сервера {получить, набор;}' не имеет никакого смысла, если вы не назвали вашу модель сервера «Модель» (что странно). Пожалуйста, разместите свой код полностью. – ataravati

+0

Основываясь на вашей коррекции, он должен работать, другая вещь, о которой я мог думать (в отсутствие полного кода), является несоответствием типа данных ID и ODBCName между кодом Javascript и C#. – ndd

ответ

0

Вы можете использовать композитную модель. Это комбинация двух моделей.

1) Вход 2) Сервер

сделать одну модель LoginCompositeModel, имеющие обе модели в нем,

namespace <Solution name>.Models 
{ 
public class LoginCompositeModel 
{ 
    public <login_tablename> loginmodel { get; set; } 
    public <server_tablename> servermodel { get; set; } 
} 
} 

Вы можете использовать имя модели вместо имени таблицы тоже.

Теперь поговорим о посте в JavaScript, Вы можете попробовать АЯКС позвонить

$.ajax({ 
    type:"POST", 
    url: <url>, 
    data: $('#<form-id>').serialize(), 
    success: function(){ 
    //if want to redirect somewhere write in success call 
    //or any other thing you want to do. 
    }, 
    error: function(){ 
    alert("Unexpected error occured"); 
    } 
}); 
0

Ваше имя в Javascript ODBCName в то время как в коде C# это ServerName сначала исправьте эту опечатку.

0

Во-первых, она появляется у вас есть дополнительный «запятая» после вашей собственности ODBCName. Это третье непреднамеренное свойство, вероятно, приводит к тому, что свойство дочернего объекта не распознается как объект Server.

Кроме того, вы можете попытаться разбив строительство вашего объекта в JS:

var dataItem = { 
     Username: username, 
     Password: password 
    }; 

dataItem.Server = { 
      Id: selectionId, 
      ODBCName: selectionText 
     } 
Смежные вопросы