Попробуйте добавить это в форму
@using (Html.BeginForm("Save", "Contacts", FormMethod.Post))
Также в отношении правильного способа отправки данных из представления в контроллер, это в основном именно то, что вам нужно в данный момент времени. Если вы просто хотите отправить данные в форме, это, вероятно, лучший способ. Однако, если вам, например, зачем отправлять эти данные, а затем обновлять определенный аспект страницы, например частичное представление, я бы предложил использовать ajax.
РЕДАКТИРОВАТЬ: Основываясь на правке вопроса, делая автономный идентификатор контакта обнуляемым, это должно решить проблему идентификатора всегда требуется
Какую версию Java Вы используете? С 1.6.0_11 код (вставляемый ниже) компиляции и выполнения.
Я уверен его очевидное почему foo(testVal)
переходит в foo(Object)
.
Причина, почему foo(null)
переходит в foo(String)
немного комплекса. Константа null
имеет тип nulltype
, который является подтипом всех типов. Так, это nulltype
расширяется String
, который расширяется Object
.
Когда Вы звоните foo(null)
компилятор ищет перегруженный метод с наиболее определенным типом. С тех пор String
более конкретно затем Object
это - метод, который называют.
Если у Вас была другая перегрузка, которая была так же конкретна как Строка, сказать foo(Integer)
затем Вы получили бы неоднозначную ошибку перегрузки.
class NullType {
public static final void main(final String[] args) {
foo();
}
static void foo()
{
Object testVal = null;
foo(testVal); // dispatched to foo(Object)
foo(null); // compilation problem -> "The method foo(String) is ambiguous"
}
public static void foo(String arg) { // More-specific
System.out.println("foo(String)");
}
public static void foo(Object arg) { // Generic
System.out.println("foo(Object)");
}
}
Поскольку второе прокомментировало вызов с пустым указателем, неоднозначно к компилятору. Литеральный пустой указатель мог быть строкой или объектом. Принимая во внимание, что присвоенное значение имеет определенный тип. Необходимо бросить пустой указатель, например, test.foo ((Строка) пустой указатель) для удаления неоднозначности.
Кто-либо попробовал пример???
С 1.6.0 нечто (пустой указатель) отправлен самому определенному методу, применимому, который является нечто (Строка)...
Если Вы добавляете, что в новом методе говорится, что нечто (Целое число) компилятор не может выбрать самый определенный применимый метод и показывает ошибку.
- Patrick
Извините, что использовал ответ для комментария, но мне нужно к почтовому индексу, который не впишется в комментарий.
@Yang, я также могу скомпилировать и выполнить следующее. Можно ли отправить полный код, который компилирует с одной строкой, прокомментированной таким образом что, если я некомментирую, что строка она не скомпилирует?
class NullType {
public static final void main(final String[] args) {
foo();
new Test().bar(new Test());
}
static void foo()
{
Object testVal = null;
foo(testVal); // dispatched to foo(Object)
// foo(null); // compilation problem -> "The method foo(String) is ambiguous"
}
public static void foo(String arg) { // More-specific
System.out.println("foo(String)");
}
public static void foo(Integer arg) { // More-specific
System.out.println("foo(Integer)");
}
public static void foo(Object arg) { // Generic
System.out.println("foo(Object)");
}
}
class Test
{
void bar(Test test)
{
Object testVal = null;
test.foo(testVal); // dispatched to foo(Object)
test.foo(null); // compilation problem -> "The method foo(String) is ambiguous"
}
public void foo(String arg) { // More-specific
System.out.println("foo(String)");
}
public void foo(Object arg) { // Generic
System.out.println("foo(Object)");
}
}